作为测试一些代码的副作用,我编写了一个小函数来比较使用array.push方法与直接寻址(array [n] = value)的速度.令我惊讶的是,推送方法通常表现得更快,特别是在Firefox中,有时在Chrome中.只是出于好奇:任何人都有解释吗?您可以在此页面找到测试(单击"数组方法比较")
我经常看到开发人员在JavaScript中使用如下表达式:
arr = []
arr[arr.length] = "Something"
arr[arr.length] = "Another thing"
Run Code Online (Sandbox Code Playgroud)
会不会push
更合适?
arr = []
arr.push("Something")
arr.push("Another thing")
Run Code Online (Sandbox Code Playgroud) 做的缺点是什么:
var myArray = [];
myArray[myArray.length] = val1;
myArray[myArray.length] = val2;
Run Code Online (Sandbox Code Playgroud)
代替:
var myArray = [];
myArray.push(val1);
myArray.push(val2);
Run Code Online (Sandbox Code Playgroud)
我确信push方法更"可接受",但是功能上有什么不同吗?
我想知道是否有选择的理由
array.push(element)
Run Code Online (Sandbox Code Playgroud)
超过
array[array.length] = element
Run Code Online (Sandbox Code Playgroud)
或相反亦然。
这是一个简单的例子,我有一个数字数组,我想用这些数字乘以 2 来创建一个新数组:
var numbers = [5, 7, 20, 3, 13];
var arr1 = [];
var len = numbers.length;
for(var i = 0; i < len; i++){
arr1.push(numbers[i] * 2);
}
alert(arr1);
var arr2 = [];
for(var i = 0; i < len; i++){
arr2[arr2.length] = numbers[i] * 2;
}
alert(arr2);
Run Code Online (Sandbox Code Playgroud)