返回数组中的对象属性

时间:2019-08-15 10:29:03

标签: javascript ecmascript-6

我有一个看起来像这样的数组:

const arr = [{
    name: 'One',
    id: 1
  },
  {
    name: 'Two',
    id: 2
  }
];

然后我想只返回对象名称,如果ID匹配。

我尝试了以下类似的方法,但是它以数组的形式返回了整个对象:

const arr = [{
    name: 'One',
    id: 1
  },
  {
    name: 'Two',
    id: 2
  }
];

const getNameFromId = id => {
  return arr.filter(item => {
    if (item.id === id) {
      return item.name;
    }
  })
}

const res = getNameFromId(1)
// This should return `'One'`
console.log(res)

2 个答案:

答案 0 :(得分:3)

您可能更喜欢使用find

const id = 2
arr.find(val => val.id === id).name

您应该检查find是否返回值

const getNameFromId = id => {
  const search = arr.find(val => val.id === id)
  if (search) {
    return search.name
  }
}

答案 1 :(得分:1)

如果使用filter(返回一个数组),则可以从第一个元素中获取name。不过,其他答案中提到的find可能更适合您的需求。

const arr = [{ name: 'One', id: 1 }, { name: 'Two', id: 2} ];

const getNameFromId = (id) => {
  return arr.filter(item => item.id === id)[0].name;
}

const res = getNameFromId(1)
console.log(res)