删除对象属性上的逗号

时间:2017-03-14 07:46:54

标签: javascript jquery

我正在尝试在获取对象属性时删除逗号,但是当我获取名称时我总是得到它。这就是我的尝试:

var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];

var getName =  items.map(function(element){
        if (element.id == 2){
        return element.name.replace(',', '');
    }
});

alert(getName);

我总是得到这个

enter image description here

或者

enter image description here

这是FIDDLE

那么如何在没有任何逗号的情况下打印出干净的名字?

6 个答案:

答案 0 :(得分:1)

您可以使用Array#filter()过滤所需的ID - Array#map()仅获取名称,join()加入结果以显示名称

var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];
var neededId = "1";
console.log(items.filter(i=>i.id===neededId).map(i=>i.name).join(' '));

逗号说明

您正在创建一个包含2个值的新数组getName。名称ball,但也是未定义的值。 Array#map()正在遍历所有数组但是对于具有id=2的第二个对象,则不返回任何内容。因此它变为undefined

使用console.log时,您可以清楚地看到未定义的值。

alert()将显示空字符串而不是undefined。这就是你看到逗号的原因。它是分开2个字符串

var items = [{ "id": "1",	"name": "ball" }, {	"id": "2", "name": "galaxy" }];

var getName =  items.map(function(element){
		if (element.id == 1){
        return element.name.replace(',', '');
    }
});
console.log(getName);

答案 1 :(得分:1)

您可以过滤结果并仅映射所需的属性,因为Array#map会返回所有元素的内容,但只需要Array#filter来获取一个结果集。

var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];

var getName =  items.filter(function (element) {
            return element.id !== "2";
        }).map(function(element){
            return element.name;
        }).join(', ');

console.log(getName);

答案 2 :(得分:1)

    var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];

    var getName =  items.map(function(element){
        if (element.id == 1){          
            return element.name.replace(',', '');
        }
    }).join('');

    alert(getName);   

Fiddle link

答案 3 :(得分:1)

var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];

// map function will return array of data
// from the code below, we will get
// names = ['ball', 'galaxy']
var names = items.map(function(element){
  return element.name;
});

// to print all names without comma,
// simply join each array item with ' '
console.log(names.join(' ')); // print >> ball galaxy

// if you want to select particular name, using find() may be more sense
const ball = items.find(function(item) {
  return item.id === '1';
});

console.log(ball.name); // print >> ball

答案 4 :(得分:1)

var items = [{ "id": "1",	"name": "ball" }, {	"id": "2", "name": "galaxy" }];

$.each(items, function(e, val) {
 alert(val.name);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

答案 5 :(得分:1)

Array#toString()工作原理的问题结果:nullundefined值变为空字符串,数组由&#34;,&#34;加入:< / p>

&#13;
&#13;
var names = [undefined, "galaxy"];

console.log("names (array):", names);
console.log("names (string):", String(names));
&#13;
&#13;
&#13;

alert(names)强制将names转换为String,因为alert()只能打印字符串。更好地使用控制台。

我不确定你是否想打印一个名字或所有名字,你的代码对我来说很暧昧。

&#13;
&#13;
var items = [{ "id": "1",   "name": "ball" }, { "id": "2", "name": "galaxy" }];


//since you're using `map` it implies that you want 
//to fetch the name of every item in the array
//because this is what `Array#map()` does.
function getAllNames(){
  return items.map(item => item.name);
}

console.log("all names:", getAllNames(items));

//on the other hand, your condition would imply you want only a specific item
function getNameById(id){
  return items.find(item => item.id === id).name;
}

console.log("name of #1:", getNameById("1"));
console.log("name of #2:", getNameById("2"));
&#13;
&#13;
&#13;

还有另外一件事。您已将变量命名为getName,这将意味着它包含一个我可以执行以获取名称的函数。但事实并非如此。它包含一个名称和undefined值的数组。

正确命名变量和函数有助于理解代码特定部分的内容;不仅仅是对我们,而且如果你必须在两周后再看看那段代码。