简体   繁体   English

在嵌套数组对象中查找对象键

[英]find object key in nested array object

I have an object I would get {FIABILITE:XXX,RECTIVITE:YYY} of region=AAA ( or other) in VOYAGES ( I dont need to search in ICC ) 我有一个对象,我会得到{FIABILITE:XXX,RECTIVITE:YYY}region=AAA (或其他)在VOYAGES (我不需要在搜索ICC

Here's how I'm trying to get data 这就是我试图获取数据的方式

 const activityName = 'VOYAGES' // activityName: VOYAGES Or ICC const queryParams = [',','region=AAA'] const objectifs = { 'VOYAGES': [ { 'region=AAA': { FIABILITE: '75', REACTIVITE: '90' } }, { 'region=BBBB': { FIABILITE: '75', REACTIVITE: '86' } } ], 'ICC': [ { 'region=CSIC': { FIABILITE: '45', REACTIVITE: '80' } } ] } const objKeys = Object.values(objectifs[activityName]) const index = objKeys.indexOf((queryParams[1])); const data = objectifs[activityName][index]; console.log(data) 

Actualy data is undefined. 实际data是不确定的。

I want to get {FIABILITE:XXX,RECTIVITE:YYY} of region=AAA for example 例如,我想获取region=AAA {FIABILITE:XXX,RECTIVITE:YYY}

It's because of how your object is created that you're getting undefined, you need to add an index objectifs['VOYAGES'][0]['region=AAA'] as so : 由于未定义对象是如何创建的,因此需要添加索引objectifs['VOYAGES'][0]['region=AAA']如下所示:

 objectifs = { 'VOYAGES': [{ 'region=AAA': { FIABILITE: '75', REACTIVITE: '90' } }, { 'region=BBBB': { FIABILITE: '75', REACTIVITE: '86' } } ], 'ICC': [{ 'region=CSIC': { FIABILITE: '45', REACTIVITE: '80' } }] } var data = {} objectifs['VOYAGES'].forEach(function(element) { if ('region=AAA' in element) { data = element['region=AAA']; } }); console.log(data) 

You can try: 你可以试试:

 const queryParams = [',','region=AAA'] const activityName = 'VOYAGES' const searchKey = queryParams[1]; objectif={'VOYAGES': [ { 'region=AAA': { FIABILITE: '75', REACTIVITE: '90' } }, { 'region=BBBB': { FIABILITE: '75', REACTIVITE: '86' } } ], 'ICC': [ { 'region=CSIC': { FIABILITE: '45', REACTIVITE: '80' } } ]}; let resultData = objectif[activityName].find((entry) => { return entry[searchKey]; })[searchKey]; console.log("Result data: ", resultData); 

You can find the index in the array of the object with a specific property using: 您可以使用以下index在具有特定属性的对象数组中找到index

const index = objectifs[activityName].findIndex(x => !!x[queryParams[1]])

Working Example: 工作示例:

 const activityName = 'VOYAGES' // activityName: VOYAGES Or ICC const queryParams = [',','region=AAA'] const objectifs = { 'VOYAGES': [ { 'region=AAA': { FIABILITE: '75', REACTIVITE: '90' } }, { 'region=BBBB': { FIABILITE: '75', REACTIVITE: '86' } } ], 'ICC': [ { 'region=CSIC': { FIABILITE: '45', REACTIVITE: '80' } } ] } const index = objectifs[activityName].findIndex(x => x.hasOwnProperty([queryParams[1]])); const data = objectifs[activityName][index]; console.log(data) const obj = data[queryParams[1]]; console.log(obj) 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM