从json对象中删除数组项的问题

时间:2014-05-02 15:25:23

标签: javascript jquery json

我有以下代码将一个数组项移动到另一个数组项。

var data={"Used":[{"Items":[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]}],"UnUsed":[{"Items":[]}]};    
data.UnUsed[0].Items.splice(0,0,data.Used[0].Items);    
var len=data.Used[0].Items.length;  
for(i=0;i<len;i++)  
{
    data.Used[0].Items.splice(0,1);
}   
console.log(JSON.stringify(data));

当前输出为:

{"Used":[{"Items":[]}],"UnUsed":[{"Items":[[]]}]} 

预期输出为:

{"Used":[{"Items":[]}],"UnUsed":[{"Items":[[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]]}]}

2 个答案:

答案 0 :(得分:1)

以下是一个解决方案:http://jsfiddle.net/K3cz3/

var data={"Used":[{"Items":[{"ID":1,"Name":"item1"},{"ID":2,"Name":"item1"}]}],"UnUsed":[{"Items":[]}]};    
var len = data.Used[0].Items.length;
for (i = 0; i < len; i++) {
    data.UnUsed[0].Items.splice(0, 0, data.Used[0].Items[0]);
    data.Used[0].Items.splice(0, 1);
}
console.log(JSON.stringify(data));

编辑:

这是一个更好的一个,可以更清楚地发生了什么:

var len = data.Used[0].Items.length;
for (i = 0; i < len; i++) {
    data.UnUsed[0].Items.push(data.Used[0].Items.pop());
}
console.log(JSON.stringify(data));

小提琴:http://jsfiddle.net/K3cz3/1/

或者简单地说:

data.UnUsed[0].Items = data.Used[0].Items;
data.Used[0].Items = [];
console.log(JSON.stringify(data));

小提琴:http://jsfiddle.net/K3cz3/2/

答案 1 :(得分:1)

你可以这样做 - 节省必须在整个商店拼接。

data.UnUsed[0].Items = data.Used[0].Items;
data.Used[0].Items = [];

Demo