【问题标题】:Return filtered array with only elements that match given value返回仅包含与给定值匹配的元素的过滤数组
【发布时间】:2016-10-25 12:55:51
【问题描述】:

我想要一个通过帖子数组的方法,并返回一个新数组,其中仅包含与 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(),但我完全可以理解如何做,或者在这种情况下最好的方法是什么。

任何帮助表示赞赏。

【问题讨论】:

标签: javascript arrays methods filter


【解决方案1】:

老实说,你几乎在那里..

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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我很接近......我只是不确定如何处理函数的内容。因此,如果它符合条件,它只会返回元素。明白了:)
    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 2021-11-21
    • 2018-12-06
    • 2016-10-31
    • 2013-01-22
    • 2018-08-06
    相关资源
    最近更新 更多