Jan*_*lia 6 javascript ecmascript-6 reactjs
我有一堆对象数组,我想使用过滤器获取特定对象,但我使用下面的代码得到了数组.
const target = [{
name: 'abc',
id: 1
}, {
name: 'def',
id: 2
}]
const x = target.filter(o => o.id === 1)
console.log(x)Run Code Online (Sandbox Code Playgroud)
rai*_*7ow 19
如评论中所述,filter不允许您从数组中获取特定对象 - 它只返回另一个元素,这些元素满足给定的谓词.你真正需要的是Array.prototype.find().引用文档:
该
find()方法返回数组中第一个满足提供的测试函数的元素的值.否则undefined返回.
所以你的代码看起来像这样:
const target = [{
name: 'abc',
id: 1
}, {
name: 'def',
id: 2
}];
const x = target.find(o => o.id === 1);
console.log(x); // {name: "abc", id: 1}Run Code Online (Sandbox Code Playgroud)
小智 5
array.filter 始终返回数组。但你可以试试这个——
const target = [{
name: 'abc',
id: 1
}, {
name: 'def',
id: 2
}]
let obj = {}
const x = target.filter( (o, index) => {
if(o.id === 1)
obj = target[index]
})
console.log(obj)Run Code Online (Sandbox Code Playgroud)
Array.prototype.filter将返回包含通过测试函数的原始数组中的元素的数组。
如果您确定 id 是唯一的,只需执行 x[0] 即可获得结果。
| 归档时间: |
|
| 查看次数: |
5491 次 |
| 最近记录: |