我试图从数组中删除一些对象:
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 :(得分:2)
您的obj
看似Array
,但不是Array
。
你有什么:
obj
属性将Array
转换为length
并使用 ES6 Array.splice
删除数组的项目。Array
json object
转换回Array.forEach
请参阅此代码段。
var obj = {
"0": {
test: "test",
test: "test"
},
"1": {
test1: "test1",
test1: "test1"
},
"2": {
test2: "test2",
test2: "test2"
},
"length": 3
};
// method of ES5
//var arr1 = [].slice.call(obj);
// method of ES6
var arr1 = Array.from(obj);
console.log(arr1);
//delete arr1[1];
arr1.splice(1, 1);
console.log(arr1);
console.log(arr1.length);
// convert back to json
obj = {};
arr1.forEach(function(item, index) {
obj[index] = item;
});
console.log(obj);
答案 1 :(得分:0)
这是一个用字符串索引的对象:
{
"0":{
test: "test",
test: "test"
},
"1": {
test1: "test1",
test1: "test1"
},
"2": {
test2: "test2",
test2: "test2"
}
}
要制作数组,请执行以下操作:
[
{
test: "test",
test: "test"
},
{
test1: "test1",
test1: "test1"
},
{
test2: "test2",
test2: "test2"
}
]
此外,以上是Javascript对象和Javascript数组。正确的JSON将具有字符串,非重复键:
[
{
"test": "test"
},
{
"test1": "test1"
},
{
"test2": "test2"
}
]