为了账号安全,请及时绑定邮箱和手机立即绑定

遍历对象数组并检查它是否具有给定属性或不使用 typescript 或 javascript

遍历对象数组并检查它是否具有给定属性或不使用 typescript 或 javascript

浮云间 2022-01-07 10:39:25
在我的 Angular 6 应用程序中,我有以下从后端检索的 json 对象。"participants": [{        "dateJoin": 1520409578,        "dateLeft": 0,        "firstName": "edh",        "internalId": 165,        "invitedBy": "edh",        "lastName": "edh",        "userId": "edh",        "key":"data"    }, {        "dateJoin": 1520409578,        "dateLeft": 0,        "firstName": "",        "internalId": 166,        "invitedBy": "edh",        "lastName": "",        "userId": "ATB"    }],    "dataInAB": "ATB",    "subject": "test ",    "unreadMessageCount": 0,    "updateDate": 1520585258,    "updatedBy": "atb"}在上面的对象数组中,我想知道它是否具有名为 key 的属性?如果不是,它将检查另一个对象并使用打字稿检查它。密钥的位置可以存在于任何参与者的对象中。如果它存在于任何地方,则返回它的值。我知道使用 hasOwnProperty 但我不确定它是否会遍历所有对象?谢谢
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

试试这样:


getValueOfKey() {

    for (var obj of this.data.participants) {

      if(obj.hasOwnProperty('key')){

         return obj.key;

      }

    }

}


查看完整回答
反对 回复 2022-01-07
?
临摹微笑

TA贡献1982条经验 获得超2个赞

如果要检查数组是否具有具有key属性的对象,请使用some方法。如果要获取数组中具有key属性的所有对象,请使用filter方法:


const arr = [{

    "dateJoin": 1520409578,

    "dateLeft": 0,

    "firstName": "edh",

    "internalId": 165,

    "invitedBy": "edh",

    "lastName": "edh",

    "userId": "edh",

    "key": "data"


}, 

{

    "dateJoin": 1520409578,

    "dateLeft": 0,

    "firstName": "",

    "internalId": 166,

    "invitedBy": "edh",

    "lastName": "",

    "userId": "ATB"

}];


const hasKey= arr.some(s => s.key);

console.log(`hasKey: ${hasKey}`);

const objectsWithKeyProperties = arr.filter(f => f.key);

console.log(`objectsWithKeyProperties :`, objectsWithKeyProperties);


查看完整回答
反对 回复 2022-01-07
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以使用过滤器Array.prototype.filter()从与您的过滤器匹配的数组中检索所有元素。


该函数接受一个回调函数作为必须返回true以保留元素或false删除元素的参数。该函数返回一个包含与过滤器匹配的所有元素的新数组:


const result = [1, 2, 3, 4, 5].filter((num) => num > 3);

// result will look like this: [4, 5]

对于您的问题,您将检查所需的属性是否为undefined:


participants.filter((participant) => participant.key !== undefined);

此函数将返回一个新数组,其中包含所有具有名为key的属性的对象。


我们可以使用一些 Javascript 魔法来缩短事件并省略!== undefined检查,因为在一个if条件下,undefined等于 false 并且任何其他结果(除了 boolean false)等于true:


participants.filter((participant) => participant.key);

片段:


console.log([1, 2, 3, 4, 5].filter((num) => num > 3));


const participants = [

  {name: "John", key: "zero"},

  {name: "Prince"}

];


console.log(participants.filter((participant) => participant.key));


查看完整回答
反对 回复 2022-01-07
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信