javascript - 如果 JavaScript ES6 中为空,则从对象中删除子数组

标签 javascript ecmascript-6

我有一个看起来像这样的对象:

const inputObject = {
    "startDate": {
        "$gte": "2017-03-29T00:00:00.000Z",
        "$lte": "2017-08-20T00:00:00.000Z"
    },
    "$and": [
        { "$or": [
                {"details.thing": { "$in": [ "01" ] } },
                {"details.thing": { "$in": [ "01" ] } },
                {"details.thing": { "$in" : [ "01" ] } },
                {"details.thing": { "$in" : [ "01" ] } }
            ]
        },
        {
            "$or": []
        },
        {
            "$or": []
        }
    ]
}

我需要开发一个函数来删除任何存在的空 { "$or": [] }, 子数组。我的预期输出是:

const outputObject = {
    "startDate": {
        "$gte": "2017-03-29T00:00:00.000Z",
        "$lte": "2017-08-20T00:00:00.000Z"
    },
    "$and": [
        { "$or": [
                {"details.thing": { "$in": [ "01" ] } },
                {"details.thing": { "$in": [ "01" ] } },
                {"details.thing": { "$in" : [ "01" ] } },
                {"details.thing": { "$in" : [ "01" ] } }
            ]
        }
    ]
}

我可以对对象中的第一级数组执行此操作,但我不确定如何对第二级数组执行此操作。

最佳答案

使用Array.prototype.filter:

const outputObject = {
  "startDate": {
    "$gte": "2017-03-29T00:00:00.000Z",
    "$lte": "2017-08-20T00:00:00.000Z"
  },
  "$and": [
    { 
      "$or": [
        {"details.thing": { "$in": [ "01" ] } },
        {"details.thing": { "$in": [ "01" ] } },
        {"details.thing": { "$in" : [ "01" ] } },
        {"details.thing": { "$in" : [ "01" ] } }
      ]
    },
    {
      "$or": []
    }
  ]
};

var filtered = outputObject.$and = outputObject.$and
  .filter(cond => cond.$or.length > 0)
;

// console.log('filtered', filtered);
// shows only the resulting array, your Object remains
// outputObject
console.log('outputObject', outputObject);

关于javascript - 如果 JavaScript ES6 中为空,则从对象中删除子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45944264/

相关文章:

javascript - Angular Js $httpParamSerializer 和 jQuery $.ajax

javascript - 如何使用 html、css 和 javascript 创建新的临时图像?

javascript - spy 功能不起作用 - Jasmine

javascript - 导入语句和 Babel

javascript - setTimeout 的行为因传递的函数参数而异

javascript - 如何为每个 jquery 同级创建添加/子值的单击事件

javascript - 使用 getDerivedStateFromProps 获取 API 数据导致组件渲染多次

javascript - Babel 没有替换箭头函数

javascript - 如何将值从一个输入字段复制到另一个

javascript - WebStorm/PhpStorm 和 JavaScript ES6 : destructuring assignment not recognized