我想从我的JSON对象中删除一个特定的项目,保留对象的其余部分,但我希望指出“重新计算”或其他东西......
obj = {
"0":{
test: "test",
test: "test"
},
"1": {
test1: "test1",
test1: "test1"
},
"2": {
test2: "test2",
test2: "test2"
}
}
如果我删除了
这样的项目delete obj[1];
我得到以下内容:
obj = {
"0":{
test: "test",
test: "test"
},
"2": {
test2: "test2",
test2: "test2"
}
}
但是我想要使用索引0和1的obj。因为如果我问结果的.length(在删除项目之后)它会给我3并且我需要正确的长度申请。
在这种情况下,谁知道最佳做法是什么?
答案 0 :(得分:1)
首先,将对象更改为数组:
obj = [ {
test: "test",
test: "test"
},{
test1: "test1",
test1: "test1"
},{
test2: "test2",
test2: "test2"
}]
然后您可以使用splice()
从数组中删除元素:
obj.splice(1, 1); // removes the item at index 1
这样您就可以省去重置索引的需要,因为您只需使用数组本身的序数。
答案 1 :(得分:0)
如果您无法修改该数据的结构(这基本上意味着将其转换为ECMAscript数组),您可以稍微破解它。基本上你可以将Object变成一个ECMAscript数组。
obj.length = Object.keys( obj ).length;
obj.splice = [].splice;
现在你可以像普通的数组一样对待它
obj.splice(1,1);
这将移除位置1
处的元素。您需要通过删除.length
和.splice
属性来恢复该对象的完整性。
delete obj.length;
delete obj.splice;
这可能不是最优雅的解决方案,但它可以完成这项工作。