Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除某些元素后如何重新索引对象?_Javascript_Object - Fatal编程技术网

Javascript 删除某些元素后如何重新索引对象?

Javascript 删除某些元素后如何重新索引对象?,javascript,object,Javascript,Object,假设我有一个对象,看起来像: { 0: { ... } 1: { ... } 2: { ... } ... 92812093: { ... } } 如果在整个对象中删除一些元素,我如何保持它们的相对顺序?换句话说,如果在0和3之间,我删除了键2,我希望新的键是0,1,2,其中0和1未被触及,到3现在变成了2。与数组不同,对象实际上没有数字索引。换句话说,当你循环通过一个对象时,甚至不能保证你会按这个顺序得到0,1,2 如果顺序很重要,您可以选择利用数组索引,并将数据格式化为

假设我有一个对象,看起来像:

{
  0: { ... }
  1: { ... }
  2: { ... }
  ...
  92812093: { ... }
}

如果在整个对象中删除一些元素,我如何保持它们的相对顺序?换句话说,如果在0和3之间,我删除了键2,我希望新的键是0,1,2,其中0和1未被触及,到3现在变成了2。

与数组不同,对象实际上没有数字索引。换句话说,当你循环通过一个对象时,甚至不能保证你会按这个顺序得到0,1,2

如果顺序很重要,您可以选择利用数组索引,并将数据格式化为var arr=[x,y,z]。可以使用arr[索引]访问此数据。使用数组方法(如pop、shift或splice)删除元素将确保保留顺序


例如,如果我们将arr[1]拼接出来,arr将变成[x,z],z现在将位于索引1而不是索引2。

也许可以使用对象而不是数组。。。i、 e.var thingy={0:{…},1:{…},2:{…}…92812093:{…},您在字母与数字排序方面遇到问题,必须使用00000000而不是0 etc。Mikey注释的可能重复项是正确的。即使一个浏览器按字母顺序存储对象成员,也不能保证下一个浏览器会。使用数组似乎可以实现您想要的功能,即当您删除元素2时,原来是3的元素现在是元素2。实际上误读了你的问题,以为你已经在使用数组了,想让元素3在移除2时保持为3。既然你已经在使用一个已经是行为的对象了,但是你的存储顺序从来没有保证过。如果你甚至需要考虑重新索引的话,这里就有问题了。您试图解决的更高级别的问题是什么?对数组重新排序的一种方法是过滤空值:array=array.filter x=>x。由于每次删除某些内容时都会创建一个新阵列,这可能会导致大型阵列出现性能问题。正如Bernard Lin所建议的那样,您最好使用拼接。