我有一堆对象数组,我想使用过滤器获取特定对象,但我使用下面的代码得到了数组。
const target = [{
name: 'abc',
id: 1
}, {
name: 'def',
id: 2
}]
const x = target.filter(o => o.id === 1)
console.log(x)

答案 0 :(得分:10)
如评论中所述,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}

答案 1 :(得分:1)
array.filter总是返回数组。但你可以尝试这个 -
Sub ClipboardToExcel()
Dim MyData As DataObject
Dim strClip As String
Set MyData = New DataObject
MyData.GetFromClipboard
strClip = MyData.GetText
Sheets("sheet2").Select
Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=
_
False, NoHTMLFormatting:=True
End Sub

答案 2 :(得分:0)
Array.prototype.filter
将返回包含传递测试函数的原始数组中元素的数组。
如果您确定id是唯一的,只需执行x [0]即可获得结果。
答案 3 :(得分:0)
filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
find() 方法返回提供的数组中满足提供的测试函数的第一个元素的值。如果没有满足测试函数的值,则返回 undefined。