返回已过滤的数组,仅包含与给定值匹配的元素

时间:2016-10-25 12:55:52

标签: javascript arrays methods filter

我想要一个遍历posts数组的方法,并返回一个只包含与userId属性的某个值匹配的元素的新数组。

例如:

let postsArr = [
      {
        "userId": 1,
        "id": 1
      },
      {
        "userId": 1,
        "id": 2
      },
      {
        "userId": 2,
        "id": 3
      },
      {
        "userId": 2,
        "id": 4
      },
      {
        "userId": 3,
        "id": 5
      }
    ]

说我想只返回userId: 2的项目。

(有点像...)

let filteredArr = postsArr.method( post => post.userId === 2)

哪个(理想情况下)会返回:

[
      {
        "userId": 2,
        "id": 3
      },
      {
        "userId": 2,
        "id": 4
      }
    ]

我确定它会像.map()或.filter(),但我可以完全理解如何做到这一点,或者在这种情况下最好的方法是什么。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

说实话,你真的很好..

let postsArr = [
      {
        "userId": 1,
        "id": 1
      },
      {
        "userId": 1,
        "id": 2
      },
      {
        "userId": 2,
        "id": 3
      },
      {
        "userId": 2,
        "id": 4
      },
      {
        "userId": 3,
        "id": 5
      }
    ];

var farray = postsArr.filter((a) => a.userId === 2);

console.log(farray);

答案 1 :(得分:1)

在ES5中。我们曾经这样做过。

var newarray = postsArr.filter(function(obj){
     return obj.userId === 2
})