【发布时间】:2013-09-25 12:29:02
【问题描述】:
我正在经历创建一堆数组的过程,使用 push() 添加元素并根据用于在 ui 上获取元素的过程返回一些带有一堆元素的数组。
所以我最终得到了这样的结果。
[Object, Object, Object]
0: Object
parcels: Array[1]
ref: "IDE25.8.2013.0637548291"
region: "remote"
service: "Early Delivery"
totalPrice: 210
weight: "1"
1: Object
parcels: Array[1]
ref: "IDE25.8.2013.1507892643"
region: "remote"
service: "Saturday"
totalPrice: 135.67
weight: "1"
2: Object
parcels: Array[1]
ref: "IDE25.8.2013.1507432643"
region: "remote"
service: "Saturday"
totalPrice: 115.67
weight: "1"
根据我所学到的,为了“删除”您需要添加删除的对象之一
所以我用
delete consignmentsArr[1];
现在我假设删除会删除数组,但事实并非如此。剩下一个是所谓的稀疏数组。所以数组不存在,不能使用,因为它的元素和对象没有定义,但它仍然存在于数组组的索引中作为一个
[Object, undefined × 1, Object]
然而,这破坏了使用 ui 元素创建的逻辑,这些元素显示其他数组中的元素。
我并不是真的想找出如何在我的应用程序中解决这个问题。 我想知道为什么这是javascript中的默认行为?为什么删除不仅仅是顾名思义的删除,然后根据仍然存在的对象重新排序索引?为什么将其保留为稀疏数组在开发过程中会有任何好处?还有...为什么不重命名为
sparse consignmentsArr[1];
【问题讨论】:
-
重新排序索引可能非常耗时。可能这就是默认情况下不这样做的原因
-
您可以使用拼接来删除项目,如下所示:stackoverflow.com/a/5767357/887149
-
这是否意味着“删除”语法是遗留的?
标签: javascript arrays javascript-objects