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

时间:2017-09-13 09:53:50

标签: javascript reactjs ecmascript-6

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



const target = [{
  name: 'abc',
  id: 1
}, {
  name: 'def',
  id: 2
}]

const x = target.filter(o => o.id === 1)
console.log(x)




4 个答案:

答案 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。