【问题标题】:Check javascript array of objects property检查对象属性的javascript数组
【发布时间】:2017-02-19 22:47:46
【问题描述】:

我有以下 javascript 对象数组,我需要检查输出属性,如果至少有一个对象为 true,则返回 true,否则返回 false,有人可以帮我实现吗?

var array=[{"id":100,"output":false},{"id":100,"output":false},
{"id":100,"output":true}]    

【问题讨论】:

标签: javascript arrays arraylist


【解决方案1】:

最快 + 最兼容

var result = false
var json = [{"id":100,"output":false},{"id":100,"output":false},{"id":100,"output":true}]

for(
  var i = json.length;
  !result && i;
  result = json[--i].output
);

console.log("at least one? ", result)

【讨论】:

    【解决方案2】:

    您可以循环遍历数组并检查每个属性。

    var array = [
        {"id":100,"output":false},
        {"id":100,"output":false},
        {"id":100,"output":true}
    ];
    
    function testOutput ( array ) {
        for (el in array)
            if ( el.output ) return true;
    
        return false;
    }
    
    testOutput (array);
    

    最好的问候

    【讨论】:

      【解决方案3】:
      function hasOneTrue(a){
        return !!a.filter(function(v){
          return v.output;
        }).length;
      }
      
      var array = [{"id":100,"output":false}, {"id":100,"output":false}, {"id":100,"output":true}]
      console.log(hasOneTrue(array)); // true
      

      【讨论】:

      • 你过滤所有数组对象,即使true首先出现。更好地使用some()
      • @Maxx 我同意 :)
      【解决方案4】:

      你可以使用Array#some

      some() 方法测试数组中的某个元素是否通过了提供的函数实现的测试。

      var array = [{ "id": 100, "output": false }, { "id": 100, "output": false }, { "id": 100, "output": true }];
          result = array.some(function (a) { return a.output; });
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-05
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2020-08-08
        相关资源
        最近更新 更多