删除所有具有幂== 0的数组

Abh*_*kur 5 javascript jquery underscore.js

我有一个用例,其中来自后端的JSON响应如下:

 [
  {
    "name": "cab",
    "child": [
      {
        "name": "def",
        "child": [
          {
            "name": "ghi",
            "power": "0.00",
            "isParent": false
          }
        ],
        "power": "1.23",
        "isParent": true
      }
    ],
    "power": "1.1",
    "isParent": true
  },
  {
    "name": "hhi",
    "child": [
      {
        "name": "hhi2",
        "child": [
          {
            "name": "hhi3",
            "power": "0.00",
            "isParent": false
          }
        ],
        "power": "1.23",
        "isParent": true
      }
    ],
    "power": "1.1",
    "isParent": true
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要删除所有具有幂== 0的对象.在简单的数组集合上使用过滤器很容易,但是可能存在任何n个子节点中可能包含n个子节点的情况.

提前致谢!

Jon*_*Lam 5

只需使用递归函数迭代数组:

var json = ["JSON_HERE"];
function deleteIterator(json) {
  if(json.power == "0.00") {
    return null;
  } else if(json.child) {
    json.child = deleteIterator(json.child);
  }
  return json;
}
for(var i = 0; i < json.length; i++) {
  json[i] = deleteIterator(json[i]);
}
Run Code Online (Sandbox Code Playgroud)

这样做是:

  1. 迭代JSON孩子.
  2. 检查电源是否正常"0.00".
    • 如果是,删除它(返回null)
  3. 检查是否有孩子
    • 如果是,则迭代它(转到步骤2)
  4. 返回JSON元素.