通过属性值从对象数组中获取JavaScript对象

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

  • 通过JavaScript对象数组中的id查找对象28回答

  • var result = jsObjects.filter(function( obj ) {
      return obj.b == 6;
    });
    

    查看Array.prototype.filter()上的MDN Docs


    jsObjects.find(x => x.b === 6)
    

    来自MDN:

    如果数组中的元素满足提供的测试函数,则find()方法返回数组中的值。 否则返回undefined


    注意:老式浏览器(如IE)不支持像find()和arrow函数这样的方法,所以如果你想支持这些浏览器,你应该使用Babel来编译你的代码。


    我不知道你为什么反对for循环(大概你的意思是一个for循环,不是专门用于...... in),它们快速且易于阅读。 无论如何,这里有一些选项。

    For循环:

    function getByValue(arr, value) {
    
      for (var i=0, iLen=arr.length; i<iLen; i++) {
    
        if (arr[i].b == value) return arr[i];
      }
    }
    

    。过滤

    function getByValue2(arr, value) {
    
      var result  = arr.filter(function(o){return o.b == value;} );
    
      return result? result[0] : null; // or undefined
    
    }
    

    .forEach

    function getByValue3(arr, value) {
    
      var result = [];
    
      arr.forEach(function(o){if (o.b == value) result.push(o);} );
    
      return result? result[0] : null; // or undefined
    
    }
    

    另一方面,如果你确实意味着for..in并且想要找到一个值为6的属性的对象,那么除非你传递名称来检查,否则你必须使用for..in。 例如

    function getByValue4(arr, value) {
      var o;
    
      for (var i=0, iLen=arr.length; i<iLen; i++) {
        o = arr[i];
    
        for (var p in o) {
          if (o.hasOwnProperty(p) && o[p] == value) {
            return o;
          }
        }
      }
    }
    
    链接地址: http://www.djcxy.com/p/27225.html

    上一篇: Get JavaScript object from array of objects by value of property

    下一篇: How to unset a JavaScript variable?