首页 > 解决方案 > 如何根据条件获取对象数组

问题描述

如何根据javascript中的条件获取对象数组。

我有数组对象obj,其中每个对象 w1,w2...wn 的计数应大于 2。

如何根据javascript中的对象键过滤数组对象。

function getObject (obj1){
  var result = obj1.filter(e=> e.w1.count > 2 && e.w2.count > 2);
  return result;
}
var output = this.getObject(obj1);

var obj1=[
 {
"memberid": "s1",
"w1":{"count": 1, "qty": 1},
"w2":{"count": 0, "qty": 0},
 ... wn
"totalcount": 1
 },
{
"memberid": "s2",
"w1":{"count": 2, "qty": 2, "amount": 400.0},
"w2":{"count": 1, "qty": 2, "amount": 503.0},
 ... wn
"totalcount": 5
},
{
"memberid": "s3",
"w1":{"count": 3, "qty": 2, "amount": 0.0},
"w2":{"count": 3, "qty": 4, "amount": 503.0},
 ... wn
"totalcount": 6
}
]

预期输出:

[
{
"memberid": "s3",
"w1":{"count": 3, "qty": 2, "amount": 0.0},
"w2":{"count": 3, "qty": 4, "amount": 503.0},
 ... wn
"totalcount": 6
}
]

标签: javascriptarraysobjectnested-object

解决方案


您可以根据每个对象中的每个值过滤您的数组,或者不是对象,或者如果它是一个count大于 2 的对象:

const obj1 = [{
    "memberid": "s1",
    "w1": {
      "count": 1,
      "qty": 1
    },
    "w2": {
      "count": 0,
      "qty": 0
    },
    "totalcount": 1
  },
  {
    "memberid": "s2",
    "w1": {
      "count": 2,
      "qty": 2,
      "amount": 400.0
    },
    "w2": {
      "count": 1,
      "qty": 2,
      "amount": 503.0
    },
    "totalcount": 5
  },
  {
    "memberid": "s3",
    "w1": {
      "count": 3,
      "qty": 2,
      "amount": 0.0
    },
    "w2": {
      "count": 3,
      "qty": 4,
      "amount": 503.0
    },
    "totalcount": 6
  }
];

const out = obj1.filter(o => Object.values(o).every(v => typeof v != 'object' || v.count > 2));

console.log(out);


推荐阅读