在这种情况下,array.push和array.splice之间的区别

Difference between array.push and array.splice in this scenario

本文关键字:array 之间 区别 splice push 这种情况下      更新时间:2023-09-26

我正在处理一个开源项目,我不想更改行。。。

this.model[this.config.childrenPropertyName].push(child.model);

this.model[this.config.childrenPropertyName].splice(this.model.length, 0, child.model);

但它破坏了对象模型上的顺序(这是一个树实现)。但当我在测试工具中测试这两种方法时,它们似乎保持了顺序。我认为按照上面的方式实现它们会做完全相同的事情。。。

注意:这只是我的一个愚蠢的编码错误,在下方正确回答的两个错误之间没有区别

第一行插入child.model作为this.model[this.config.childrenPropertyName]数组的最后一个元素。

第二行将child.model插入到this.model[this.config.childrenPropertyName]阵列内的某个位置。

只有当this.model[this.config.childrenPropertyName].length等于this.model.length时,这些线才是相同的,但第一条线要干净得多。

在第二个示例中,您将在原始数组的索引处插入与第二个数组的长度相对应的项。

例如:如果原始长度为5,第二个长度为2,则它将变为[old,old,new,new,old,old,old]

您需要插入原始数组的长度,或者一个保证更高的数字。

请参阅MDN上的Array.prototype.splice()。

也就是说,第一种方式要干净得多。为什么不使用它?