【问题标题】:Find element that doesn't have a specific key property in JS objects array在 JS 对象数组中查找没有特定键属性的元素
【发布时间】:2021-08-16 17:42:41
【问题描述】:

我有一个数组:

[
 0 {
     Id : 01
     country : "Algery"
     name: "Amnesty"
    },
 1  {
     Id : 02
     country : "USA"
     name: "Alarmy"
    },
 2 {
     Id : 03
     country : "Alaska"
    }

]

我想在这个列表中找到没有属性“名称”的对象。

我试过myArray.find((pers) => !(pers.name));

但它不起作用..这里有人有想法吗?

【问题讨论】:

  • myArray.filter(item=>item.name===undefined) 应该可以解决问题
  • 该代码有效:jsfiddle.net/2j3n6auf
  • @ikhvjs 只是因为undefine 没有定义:P
  • @HereticMonkey,谢谢提醒!

标签: javascript arrays json reactjs javascript-objects


【解决方案1】:

该代码仅适用于 falsy name。要检查属性是否存在,您可以使用in operator

const
    array = [{ Id: 01, country: "Algery", name: "Amnesty" }, { Id: 02, country: "USA", name: "Alarmy" }, { Id: 03, country: "Alaska" }];

console.log(array.find(person => !('name' in person)));

这种方法只返回第一个找到的项目。要获取所有项目,您可以申请Array#filter 获取数组。

【讨论】:

    【解决方案2】:

    你可以这样做:

    const arr = [{ Id: 01, country: "Algery", name: "Amnesty" }, { Id:02, country: "USA", name: "Alarmy" }, { Id: 03, country:"Alaska" }];
    
    console.log(arr.find(obj => !('name' in obj)));

    【讨论】:

    【解决方案3】:

    除了上面提到的方法,还有一种方法是使用 hasOwnProperty 方法

    供您参考:

    for ( var key in jsonArray) {
      if (!jsonArray[key].hasOwnProperty("name")) {
          console.log(jsonArray[key]);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2015-04-22
      • 2013-02-04
      • 2016-07-26
      • 1970-01-01
      相关资源
      最近更新 更多