迭代一个对象数组时返回false或true

Tuk*_*das 3 javascript foreach if-statement return

我希望find()函数true在找到'john'并停止迭代槽数时返回.或者,如果寻找名称,则返回false,比如说maria,这不在我们的任何对象中.我不明白我在这段代码中无法实现我所需要的东西?谢谢.

var array = [
    {name:'paul',age:20},
    {name:'john',age:30},
    {name:'albert',age:40}
];

var find = function(arr){
    arr.forEach(function(i){
        if(i.name === 'john'){
            console.log('found him');
            return true;
        } else {
            console.log('not there');
            return false;
        }
    });
};
find(array);
Run Code Online (Sandbox Code Playgroud)

我在这里看到了一些类似的问题,但我无法理解或理解我的问题的答案.显然我需要函数能够返回name值并同时返回truefalse.

Nin*_*olz 8

Array#some如果在回调内部返回truthy值,您可以使用哪个停止迭代.

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
Run Code Online (Sandbox Code Playgroud)