在这种情况下,array.push和array.splice之间的区别
Difference between array.push and array.splice in this scenario
我正在处理一个开源项目,我不想更改行。。。
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()。
也就是说,第一种方式要干净得多。为什么不使用它?
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- 如何为json对象中的段发送array[]
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- Array.length似乎不起作用;console.log则显示其他情况
- Array.indexOf 或介于两者之间
- for(数组中的i)和for(var i=0;i<array.length;i++)之间的差异
- 在JavaScript中,什么's myArray.length=0与myArray=new Array()之间
- 什么's是Array.of(n)、Array(n)和Array=[n]之间的差值
- 什么's(数组中的x)和(i=0;i<array.length;i++)之间的差值
- a = [未定义] 和 a = new Array(1) 之间的区别
- 在这种情况下,array.push和array.splice之间的区别
- Javascript-在不使用Array.prototype.filter的情况下,根据键值获取两个对象数组之间的差异
- 什么'Array(2)和[未定义,未定义]之间的区别是什么