正确的方法,以避免空属性上的错误

时间:2017-10-04 13:22:51

标签: javascript

我注意到这是在测试可能不存在的属性时避免错误的正确方法,但它非常笨重,并且无论如何都无法正常工作!如果相关的“名称”在数组中,那么返回'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);

1 个答案:

答案 0 :(得分:0)

您可以使用.find()

var obj = myArray.find(function(entry) { return entry.name === "charles"; });
return obj ? obj.num : undefined;

.find()函数将谓词函数作为其参数,并返回数组中第一个完成测试的条目。此代码检查.find()是否返回其中一个数组条目,如果找到条目,则返回.num属性。