如何搜索和迭代此对象的id?

时间:2018-06-03 11:43:48

标签: javascript

我有一个对象,其中值是数组,并且它们内部的其他对象如下:

let primaryStandard = {
  section1: [{name: 'andy', id: 1}, {name: 'charles', id: 2},...],
  section2: [{name: 'megan', id: 55}, {name: 'derek', id: 56},...],
  section3: [{name: 'robert', id: 95}, {name: 'nathan', id: 96},...],
}

基本上,我想为特定的id值迭代整个对象,然后在对象中获取namesection

示例:

对于id = 95,结果应为{section: section3, name: 'robert`}

到目前为止我尝试过的事情:



let primaryStandard = {
  section1: [{name: 'andy', id: 1}, {name: 'charles', id: 2}],
  section2: [{name: 'megan', id: 55}, {name: 'derek', id: 56}],
  section3: [{name: 'robert', id: 95}, {name: 'nathan', id: 96}],
}

for (let key of Object.keys(primaryStandard)) {
      console.log((primaryStandard[key])) // logs the values(array)
      primaryStandard[key].map(student => console.log(student)) // .map() is not defined error
}




1 个答案:

答案 0 :(得分:-1)

您可以使用find上的Object.keys方法执行此操作以获取部分和名称。

let data = {section1: [{name: 'andy', id: 1}, {name: 'charles', id: 2}],section2: [{name: 'megan', id: 55}, {name: 'derek', id: 56}],section3: [{name: 'robert', id: 95}, {name: 'nathan', id: 96}],}

let name;
let section = Object.keys(data).find(key => {
  const match = data[key].find(({id}) => id == 95);
  if(match) return name = match.name
})

console.log({name, section})