我有一个对象数组。数组根据其索引位置获取一个值。有时数组只会在某个索引处具有一个值,例如
array = [], //initial value
array[1] = {name: 'John Doe', address: '123 Main St', registered: true}
如果谓词函数找到任何一项中存在的值,我只是想将变量设置为true / false。
var hasValue = array.find(personObj => !!personObj.registered)
问题:
如果0索引位置为空,则上面的函数将始终返回false。如果谓词函数为空,则谓词函数永远不会运行超过0索引位置。这是一张更好地描述结构的图像:
问题:
即使某些项目为空,如何正确检查数组中的所有项目?
答案 0 :(得分:3)
您可以检查对象是否存在。
callback
会为数组的每个索引调用,而不仅仅是那些分配了值的索引。这意味着与仅访问分配值的方法相比,稀疏数组的效率可能较低。
var array = [];
array[1] = { name: 'John Doe', address: '123 Main St', registered: true };
var hasValue = array.find(personObj => personObj && !!personObj.registered)
console.log(hasValue);