我有一个看起来像这样的数组:
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)
答案 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)