JavaScript动态删除编号的数组元素

时间:2017-10-14 06:33:08

标签: javascript jquery

我有一个如下所示的对象

{
  "containers": [
    {
    "fields": [
        {},
        {},
        'associative1': {},
        'associative2': {}
      ] 
    }
  ]
}

所以基本上"领域"是一个数组,其中包含字段[0],字段[1]和& fields [associative1],fields [associative2]

我的问题是我可以动态删除"只是"编号元素...... 所以最后'领域'应该只有associative1,associative2元素

3 个答案:

答案 0 :(得分:1)

创建一个看起来像你想要的有效对象......

var a = [{abc:1},{xyz:2}];
a.associative1 = {};
a.associative2 = {};
console.log(a);

输出(来自Chrome)

(2) [{…}, {…}, associative1: {…}, associative2: {…}]
0: {abc: 1}
1: {xyz: 2}
associative1: {}
associative2: {}
length: 2

您只能删除这样的编号数组元素......

a.splice(0,a.length);

或者,如果Array对象包含在更大的对象中,则此类内容将起作用...

c.containers[0].fields.splice(0,c.containers[0].fields.length)

答案 1 :(得分:1)

您可以使用解决方案



var data = {
  "containers": [
    {
    "fields": [
        {'abc': 1},
        {'xyz': 2},
        {'associative1': {}},
        {'associative2': {}}
    ]   
    }
  ]
};


for(var k in data["containers"][0]["fields"]){
 for(var key in data["containers"][0]["fields"][k]){
  if(!isNaN(data["containers"][0]["fields"][k][key])){
    delete data["containers"][0]["fields"][k];
  }
 }
}

data["containers"][0]["fields"] = data["containers"][0]["fields"].filter(function( element ) {
   return element !== undefined;
});

console.log(data);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

您的JSON无效。我稍微改变了JSON。

希望这会对你有所帮助。

答案 2 :(得分:0)

它是一个无效的对象。 fields数组包含name属性,这是不允许的。在这种情况下,字段必须是对象。如果测试将变量设置到该对象(仅在浏览器控制台中),则它将失败。