【发布时间】:2018-10-17 23:04:14
【问题描述】:
我在网上查看了从对象中删除记录并将删除的记录的 id 替换为下一条可用记录的各种方法,这意味着 JavaScript 中 delete 运算符的使用不会删除关联的记录 id用它。说我有一个对象:
obj= {
0:{},
1:{},
2:{},
3:{}
}
我想从该对象中删除一条记录,我这样做了:
delete obj[1]
它会删除记录但是当我console.log(obj)
我明白了:
obj= {
0:{},
2:{},
3:{}
}
我知道一种方法是将此对象转换为数组,然后从数组中删除元素并将其转换回对象。如果我必须避免所有这些转换,当我们删除记录时,JavaScript 对象中有没有办法,当我们删除 obj[1] 记录时,obj 返回如下:
obj= {
0:{},
1:{},
2:{}
}
改为
obj= {
0:{},
2:{},
3:{}
}
【问题讨论】:
-
对象没有顺序。为什么不使用数组?
-
@epascarello:这就是我从服务器获取数据的方式,我没有以数组格式获取数据
-
似乎是一个缺陷,并且由于对象没有顺序,因此无法轻松遍历您删除的属性之后的属性。所以真的你唯一的选择是做某种循环转换。
-
对象也没有数字键。您的对象也可能是
{ "0":{}, "1":{}, "2":{}, "3":{} }。 -
您应该考虑在使用它之前立即将从服务器接收到的数据转换为数组。您目前正在尝试将类似数组的逻辑应用于不能像数组一样操作的东西。除了键名之外,
0: {}和zero: {}之间实际上没有区别。键名不是索引器。
标签: javascript