2017-10-14 43 views
0

我有一个对象,它看起来像下面JavaScript的动态移除编号的数组元素

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

所以基本上“田”是具有像两个字段[0]的数组,字段[1] &领域[associative1 ],字段[associative2]

我的问题是我能动态删除“只是”编号的元素...... 所以最后“域”应该只是associative1,associative2元素

+4

该数组无效,您不能在数组文字中命名元素。 – Barmar

+1

你在哪里以及如何得到这个对象,好像它不是实际的数据。 –

回答

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); 

或者数组对象包含在一个更大的物体像这样将工作...

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

看起来很棒......只是一个简单的问题......究竟是什么类型的“a”在这里以及JavaScript如何实现分配a.associative1如果它被声明为一个数组...似乎是混合类型 – testndtv

+0

@testndtv Javascript报告typeof a ==='object'。 Javascript中的数组有'对象'类型。但是,并非JavaScript中的每个对象都是一个数组。 Array.isArray(a)=== true。但是Array.isArray({0:“hi”})=== false。因此,在尝试使用拼接等数组方法之前,您可能需要检查一个对象是否为数组,而对于非数组对象则不存在。 – joshp

+1

@testndtv推荐https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array Description部分简要介绍Javascript对象的关联数组属性与数组元素。 – joshp

0

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

+0

所以我可以引用字段[0],字段[1],字段[associative1]等 – testndtv

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>

你JSON是无效的。我已经改变了一点JSON。

希望这会帮助你。

+0

太棒了....正是我在找的东西! – testndtv

+0

@testndtv如果您满意,请接受答案。 – Shiladitya