在填充的对象Mongdb数组中查找值-Lodash

时间:2019-02-14 11:03:26

标签: javascript arrays lodash

也许这个问题是重复的或以不同的方式问了几次,但仍然没有解决我的问题。我正在创建从mongodb返回10,000个填充对象的nodejs api。我想根据对象过滤数组。

{color: red}

如何使用lodash过滤器返回包含指定过滤器对象的数组。

[
  {
    "value": 200,
    "newEle": {
      "gradient": "true",
      "mode": {
        "color": "red"
      }
    }
  },
  {
    "value": 100,
    "newEle": {
      "gradient": "false",
      "mode": {
        "color": "blue"
      }
    }
  }
]

2 个答案:

答案 0 :(得分:1)

如果您专门尝试仅按颜色进行过滤,则可以使用香草JS的.filter()将具有color属性的red的所有对象放入一个新数组:

const arr = [
  {
    "value": 200,
    "newEle": {
      "gradient": "true",
      "mode": {
        "color": "red"
      }
    }
  },
  {
    "value": 100,
    "newEle": {
      "gradient": "false",
      "mode": {
        "color": "blue"
      }
    }
  }
],
color = "red",
res = arr.filter(obj => obj.newEle.mode.color === color);

console.log(res);

如果您想专门使用lodash,可以使用_.filter()

const arr = [
  {
    "value": 200,
    "newEle": {
      "gradient": "true",
      "mode": {
        "color": "red"
      }
    }
  },
  {
    "value": 100,
    "newEle": {
      "gradient": "false",
      "mode": {
        "color": "blue"
      }
    }
  }
],
color = "red",
res = _.filter(arr, obj => obj.newEle.mode.color === color);

console.log(res);
<script src="https://cdn.jsdelivr.net/lodash/4.16.4/lodash.min.js"></script>

答案 1 :(得分:0)

使用lodash时,就这么简单。

 let filtered_array = _.filter(myArr, { color: 'red' });

但是,由于您嵌套了嵌套对象,因此您想创建一个访问嵌套值的谓词。您可以使用数组来完成此操作。

 let filtered_array = _.filter(myArr, ['newEle.mode.color', 'red']);