我正在尝试在获取对象属性时删除逗号,但是当我获取名称时我总是得到它。这就是我的尝试:
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);
我总是得到这个
或者
这是FIDDLE
那么如何在没有任何逗号的情况下打印出干净的名字?
答案 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);
答案 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()
工作原理的问题结果:null
和undefined
值变为空字符串,数组由&#34;,&#34;加入:< / p>
var names = [undefined, "galaxy"];
console.log("names (array):", names);
console.log("names (string):", String(names));
&#13;
alert(names)
强制将names
转换为String,因为alert()
只能打印字符串。更好地使用控制台。
我不确定你是否想打印一个名字或所有名字,你的代码对我来说很暧昧。
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;
还有另外一件事。您已将变量命名为getName
,这将意味着它包含一个我可以执行以获取名称的函数。但事实并非如此。它包含一个名称和undefined
值的数组。
正确命名变量和函数有助于理解代码特定部分的内容;不仅仅是对我们,而且如果你必须在两周后再看看那段代码。