我正在使用一个开源项目我不想改变这条线......
this.model[this.config.childrenPropertyName].push(child.model);
到
this.model[this.config.childrenPropertyName].splice(this.model.length, 0, child.model);
但它打破了对象模型的排序(这是一个树实现)。但是当我在测试工具中测试这两种方法时,它们似乎保留了顺序。我认为如上所述,他们会做同样的事情......
注意:这对我来说只是一个愚蠢的编码错误,两者之间没有区别,正如下面正确回答
答案 0 :(得分:0)
在第二个示例中,您将在原始数组的索引处插入与第二个长度相对应的项目。
例如:如果原件长度为5而第二个为2,则它将变为[old,old,new,new,old,old,old]
。
您需要以原始数组的长度插入,或者保证更高的数字。
请参阅Array.prototype.splice() on MDN。
那就是说,第一种方式是如此清洁。为什么不使用它?
答案 1 :(得分:0)
第一行插入child.model
作为this.model[this.config.childrenPropertyName]
数组的最后一个元素。
第二行在child.model
数组中的某个位置插入this.model[this.config.childrenPropertyName]
。
这些行只有在this.model[this.config.childrenPropertyName].length
等于this.model.length
时才相同,但第一行更清晰。