如何在Javascript中选择对象内的数组内的字段[重复]

Posted

技术标签:

【中文标题】如何在Javascript中选择对象内的数组内的字段[重复]【英文标题】:How to select a field inside an array inside an object in Javascript [duplicate] 【发布时间】:2020-03-27 00:28:57 【问题描述】:

我有这样的对象数组:

我只需要选择 coreSystemID = 'T24' 的数组,所以我尝试了credsArr.find() 它显示我的.find 不是一个函数。

下面是我的代码:

var creds = credsArr.find(x => x.coreSystemID === 'T24')

我应该使用这样的索引值 - credsArr[3053],因为索引可能会有所不同,所以我需要选择 coreSystemID = 'T24' 的数组

【问题讨论】:

credsArr 是一个对象,而不是数组,其值相同,3052 和 3053... 如果不需要密钥(3053):Object.values(credsArr).find(cred => cred.coreSystemID === "T24") 【参考方案1】:
let keys = Oject.keys(credsArr).filter(key => credsArr[key].coreSystemID==='T24')

keys 将拥有 credsArr 的所有键,其中 credsArr[key].coreSystemID 为 'T24'

let systemT24 = credsArr[keys[0]] 将为您提供您正在寻找的对象,因为只有一个 coreSystemID 为“T24”的对象。

如果您有多个对象的 coreSystemID 可能为“T24”,您可以将其映射到一个新数组,如下所示:

let systemT24 = keys.map(key => credsArr[key])

【讨论】:

我得到这样的输出 - 0: "3053"... 你能帮忙选择这个数组 "3053" 中的所有元素吗? @Mar1009 查看修改后的答案。【参考方案2】:

你可以使用 Object.values(credsArr):

 var creds = Object.values(credsArr).find(x => x.coreSystemID === 'T24');

或者如果你需要对象的键:

var creds = Object.entries(credsArr).find(x => x[1].coreSystemID === 'T24');
let key = creds[0];
let value = creds[1];

【讨论】:

它说 Object.values is not a function is not a function

以上是关于如何在Javascript中选择对象内的数组内的字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查对象内的数组是不是为空 JavaScript

如何使用 JavaScript 或 jQuery 更改数组内的对象的值?

如何通过猫鼬(javascript)中的多个值查询数组内的对象?

JavaScript:查找值是不是在数组中的对象内的最佳方法[重复]

如何更新firestore中数组内的对象? [复制]

带有属性+数组的Json对象,如何移动数组内的属性?