迭代对象数组时返回false或true
这个问题在这里已经有了答案:
如果在回调中返回真值,可以使用Array#some
停止迭代的Array#some
。
var array = [{ name: 'paul', age:20 }, { name: 'john', age:30 }, { name: 'albert', age:40 }],
find = function(array, name) {
return array.some(function(object) {
return object.name === name;
});
};
console.log(find(array, 'paul')); // true
console.log(find(array, 'maria')); // false
你正在返回forEach(function(i) {})
,它只在内函数function(i) {}
返回,并不能帮助从外函数find()
。 另外,你的逻辑return false;
似乎也有问题。 简单地使用正常for
循环会很好。
var array = [
{name:'paul',age:20},
{name:'john',age:30},
{name:'albert',age:40}
];
var find = function(arr, name) {
for (let i of arr) {
if(i.name === name){
console.log('found ' + name);
return true;
}
}
console.log(name + ' not there');
return false;
};
find(array, 'paul');
find(array, 'maria');
停止使用forEach
方法,并尝试使用它:
var array = [
{name:'paul',age:20},
{name:'john',age:30},
{name:'albert',age:40}
];
var find = function(arr){
var returnValue = false;
for (var i = 0; i <= arr.length; i++) {
if(arr[i].name === 'john') {
ret = true;
break;
}
}
return returnValue;
};
find(array);
链接地址: http://www.djcxy.com/p/70055.html
上一篇: return false or true while iterating an array of object