Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript在条件下从数组中删除项_Javascript_Object - Fatal编程技术网

如何使用JavaScript在条件下从数组中删除项

如何使用JavaScript在条件下从数组中删除项,javascript,object,Javascript,Object,我有一个数组,如下所述。我想使用JavaScript从数组中删除一个属性值为空的项 实际数组: [ { "href":"/client", "methods":[] }, { "href":"/home", "methods": { "type1":"GET", "type2":"POST", }

我有一个数组,如下所述。我想使用JavaScript从数组中删除一个属性值为空的项

实际数组:

[
    {
        "href":"/client",
        "methods":[]
    },
    {
        "href":"/home",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    },
    {
        "href":"/about",
        "methods":[]
    },
    {
        "href":"/contact",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    }
]
[
    {
        "href":"/home",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    },
    {
        "href":"/contact",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    }
]
预期结果:

[
    {
        "href":"/client",
        "methods":[]
    },
    {
        "href":"/home",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    },
    {
        "href":"/about",
        "methods":[]
    },
    {
        "href":"/contact",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    }
]
[
    {
        "href":"/home",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    },
    {
        "href":"/contact",
        "methods":
            {
                "type1":"GET",
                "type2":"POST",
            }
    }
]

迭代对象数组并基于
方法
属性长度进行过滤

var obj = [...];
obj = obj.filter((val) => val.methods && val.methods.length !== 0);

迭代对象数组并基于
方法
属性长度进行过滤

var obj = [...];
obj = obj.filter((val) => val.methods && val.methods.length !== 0);
输入var json={}

var key=“giveitakeyvalue”

json[key]=null

删除json[key]

输入var json={}

var key=“giveitakeyvalue”

json[key]=null

删除json[key]

这是我的工作。但是,筛选器不会修改现有数组,因此需要将其分配给其他数组/覆盖当前变量

a = a.filter(item => Object.keys(item.methods).length > 0)
这是我的工作。但是,筛选器不会修改现有数组,因此需要将其分配给其他数组/覆盖当前变量

a = a.filter(item => Object.keys(item.methods).length > 0)

对于方法,您可以轻松地遍历对象,然后对值为空的键调用delete。。。。或空数组。我扩展了答案,不仅涵盖了数组为空的方法的键,还涵盖了我定义为空内容的所有键

var l = [];
for (var i = 0; i < l.length; i++){
  var keys = Object.keys(l[i]);
  for ( var j = 0; j < keys.length; j++){
    var value = keys[j];
    // In your use case, you are only doing arrays so i coded it as such.
    if (value.length == 0){
      delete l[i][j];
    }
  }
}
并应用该值,而不是值。length==0

if (isValueDeletable(value)){ delete l[i][j]; }

然后修改l以删除所有具有空值的键。

对于方法,您可以轻松遍历对象,然后对具有空值的键调用delete。。。。或空数组。我扩展了答案,不仅涵盖了数组为空的方法的键,还涵盖了我定义为空内容的所有键

var l = [];
for (var i = 0; i < l.length; i++){
  var keys = Object.keys(l[i]);
  for ( var j = 0; j < keys.length; j++){
    var value = keys[j];
    // In your use case, you are only doing arrays so i coded it as such.
    if (value.length == 0){
      delete l[i][j];
    }
  }
}
并应用该值,而不是值。length==0

if (isValueDeletable(value)){ delete l[i][j]; }

然后修改l以删除所有具有空值的键。

因此,当
方法
是空数组时删除它?这是一个对象数组,而不是对象。因此,当
方法
是一个空数组时删除它?这是一个对象数组,而不是对象。由于箭头函数,上述语法在IE中不起作用。你能帮我解决IE中的这个问题吗?如果你点击上面的过滤器链接,你会看到一个非常简单的例子,说明如何将它用于传统的函数调用。您只需要用传统的函数语法替换箭头函数。函数(item){return Object.keys(item.methods).length>0;}由于arrow函数,上述语法在IE中不起作用。你能帮我解决IE中的这个问题吗?如果你点击上面的过滤器链接,你会看到一个非常简单的例子,说明如何将它用于传统的函数调用。您只需要用传统的函数语法替换箭头函数。函数(项){返回对象.键(项.方法).length>0;}