Javascript ES6过滤器-如何返回对象而不是数组?

Javascript ES6过滤器-如何返回对象而不是数组?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我有一堆对象数组,我想用过滤器得到特定的对象,但我用下面的代码得到了数组 const目标=[{ 姓名:“abc”, 身份证号码:1 }, { 名称:“def”, 身份证号码:2 }] 常量x=target.filter(o=>o.id==1) console.log(x)Array.prototype.filter将返回包含原始数组中通过测试函数的元素的数组 如果您确定id是唯一的,只需执行x[0]即可获得结果。如注释中所述,过滤器不允许您从数组中获取特定对象-它只返回另一个数组,其中的元素满

我有一堆对象数组,我想用过滤器得到特定的对象,但我用下面的代码得到了数组

const目标=[{
姓名:“abc”,
身份证号码:1
}, {
名称:“def”,
身份证号码:2
}]
常量x=target.filter(o=>o.id==1)

console.log(x)
Array.prototype.filter
将返回包含原始数组中通过测试函数的元素的数组


如果您确定id是唯一的,只需执行x[0]即可获得结果。

如注释中所述,
过滤器不允许您从数组中获取特定对象-它只返回另一个数组,其中的元素满足给定谓词。你真正需要的是。引用文件:

find()
方法返回数组中第一个元素的值 满足提供的测试功能。否则,
未定义
返回

因此,您的代码如下所示:

const目标=[{
姓名:“abc”,
身份证号码:1
}, {
名称:“def”,
身份证号码:2
}];
const x=target.find(o=>o.id==1);

console.log(x);//{name:“abc”,id:1}
数组。筛选器始终返回数组。但你可以试试这个-

const目标=[{
姓名:“abc”,
身份证号码:1
}, {
名称:“def”,
身份证号码:2
}]
设obj={}
常量x=目标过滤器((o,索引)=>{
如果(o.id==1)
obj=目标[索引]
})

console.log(obj)
因为
array.filter
总是返回一个
array
(所有过滤项的数组),请使用
array.find
获取单个对象。请更改标题,因为
filter
@MayankShukla得到一个数组这是一条很棒的信息。我多次使用过滤器和查找,但从未意识到:)@NinaScholz Title已被编辑。如果数组较大,则只会浪费时间:
filter
将遍历所有元素,即使已找到结果<但是,代码>查找
,在创建结果后立即停止。