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

这个问题在这里已经有了答案:

  • 如何使Array.forEach短路像调用break? 24个答案

  • 如果在回调中返回真值,可以使用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

    下一篇: how get return of forEach in angular 2?