【问题标题】:filter an object JS过滤一个对象 JS
【发布时间】:2017-02-06 11:41:18
【问题描述】:

我正在尝试过滤掉一个对象,但不起作用....

这是代码:

let obj = Object.assign({},[{
        "_id": 1,
        "fecha": "2016-09-28T20:49:00.000Z"
    }, {
        "_id": 2,
        "fecha": "2016-09-26T20:48:00.000Z"
    }, {
        "_id": 3,
        "fecha": "2016-09-26T21:04:00.000Z"
    }, {
        "_id": 4,
        "fecha": "2016-09-23T21:02:00.000Z"
    }, {
        "_id": 14,
        "fecha": "2016-09-24T21:02:00.000Z"
    }, {
        "_id": 15,
        "fecha": "2016-09-24T21:01:00.000Z"
    }, {
        "_id": 17,
        "fecha": "2016-09-23T19:04:00.000Z"
    }, {
        "_id": 18,
        "fecha": "2016-09-23T19:24:00.000Z"
    }, {
        "_id": 23,
        "fecha": "2016-09-23T21:04:00.000Z"
    }]
);
console.log(obj);

let result = obj.filter(item => item._id == 1)[0];
console.log(result);

结果是:

对象{0:对象,1:对象,2:对象,3:对象,4:对象,5:对象,6:对象,7:对象,8:对象} Uncaught (in promise) TypeError: obj.find is not a function(...)

注意:函数中没有定义obj,它来自另一个系统,但我写出来是为了说明你的定义

【问题讨论】:

  • Filter 是一个数组方法。如果你这样做let obj = [{,那么没有错误
  • 你不能对Object进行过滤。
  • Object.assign({}, []) 毫无意义。

标签: javascript reactjs ecmascript-6 redux react-redux


【解决方案1】:

我不能在Object 上使用Array 的方法。假设您收到 obj 变量作为对象。您应该将其转换为数组。试试这个:

Object.keys(obj).map((i) => obj[i]).filter(e => e._id === 1)

【讨论】:

  • 请检查它作为关闭您的问题的答案。谢谢 ! =)
猜你喜欢
  • 2022-08-10
  • 2019-07-18
  • 2021-10-30
  • 2021-11-09
  • 2020-03-14
  • 1970-01-01
  • 2020-07-25
  • 2017-06-06
  • 2020-07-24
相关资源
最近更新 更多