найти ключ объекта в объекте вложенного массива - PullRequest
0 голосов
/ 09 января 2019

У меня есть объект, который я получу {FIABILITE:XXX,RECTIVITE:YYY} из region=AAA (или другого) в VOYAGES (мне не нужно искать в ICC)

Вот как я пытаюсь получить данные

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)

На самом деле data не определено.

Я хочу получить {FIABILITE:XXX,RECTIVITE:YYY} из region=AAA, например

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Вы можете попробовать:

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);
0 голосов
/ 09 января 2019

Вы можете найти index в массиве объекта с определенным свойством, используя:

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

Рабочий пример:

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)
0 голосов
/ 09 января 2019

Из-за того, как создается ваш объект, вы получаете неопределенное значение, вам нужно добавить индекс 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)
...