我注意到这是在测试可能不存在的属性时避免错误的正确方法,但它非常笨重,并且无论如何都无法正常工作!如果相关的“名称”在数组中,那么返回'num'的更好方法是什么?
var myArray = [];
myArray.push ( {'name': 'ann', 'num':5} );
myArray.push ( {'name': 'bob', 'num':6} );
var num = (myArray.map(function(s) { return s.name }).indexOf('charles')) ? myArray[myArray.map(function(s) { return s.name }).indexOf('charles')].num : 0;
console.log(num);
答案 0 :(得分:0)
您可以使用.find()
:
var obj = myArray.find(function(entry) { return entry.name === "charles"; });
return obj ? obj.num : undefined;
.find()
函数将谓词函数作为其参数,并返回数组中第一个完成测试的条目。此代码检查.find()
是否返回其中一个数组条目,如果找到条目,则返回.num
属性。