Bos*_*wow 45 javascript arrays element
我想知道JavaScript中从一开头Array
到结尾移动元素的最快方法是什么.例如,如果我们有
[8,1,2,3,4,5,6,7]
我们希望: [1,2,3,4,5,6,7,8]
我想把第一个元素移到最后.我正在考虑用元素1切换元素0,在元素2之后切换元素1,依此类推,直到8处于和(基本上如何起泡).我想知道是否有更快的方法将第一个元素带到最后.
我将使用小阵列(大约10个元素),我想避免,shift()
因为它很慢.
这就是我现在在chrome上的速度比普通shift + push快45%:http://jsperf.com/shift-myfunc
数组中将有一些对象用于游戏.
j08*_*691 85
var ary = [8,1,2,3,4,5,6,7];
ary.push(ary.shift()); // results in [1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
var ary = [8,1,2,3,4,5,6,7];
console.log("Before: " + ary);
ary.push(ary.shift()); // results in [1, 2, 3, 4, 5, 6, 7, 8]
console.log("After: " + ary);
Run Code Online (Sandbox Code Playgroud)
epa*_*llo 22
var a = ["a","b","c"];
var b = a.shift();
a.push(b);
Run Code Online (Sandbox Code Playgroud)
要么
var b = a.shift();
a[a.length] = b;
Run Code Online (Sandbox Code Playgroud)
什么是最快的?真的取决于数组的内容和浏览器/版本!
现在有什么方法可以删除第一个索引?
shift()
splice()
slice()
现在添加到最后一个索引的方法是什么?
push()
array[array.length]
concat()
- 甚至不去尝试其他方法
JSPerf:
http://jsperf.com/test-swapping-of-first-to-last
什么是最快的?
什么是最快的取决于你在使用数组做什么.如果您只是使用第一个索引,那么将代码读取为索引而不是移动值将是最快的.如果您正在使用所有索引,而不仅仅是循环和通过,当您到达结束时,从零开始.基本柜台.
使用splice获取第一个元素
var first = array.splice(0,1);
Run Code Online (Sandbox Code Playgroud)
然后推,如果是最后一个.
由于splice方法的返回值是一个数组,你必须说
array.push(first[0]);
Run Code Online (Sandbox Code Playgroud)
这里的工作示例:JSFIDDLE
以防万一你想把任何元素放到最后:
var ary = [8,1,2,3,4,5,6,7];
ary.push(ary.splice(position, 1)[0]);
Run Code Online (Sandbox Code Playgroud)
对于 position
刚刚在foreach这个包起来.
这是一个不错的ES6版本
let arr = [1,2,3,4,5,6]
const [first, ...rest] = arr;
arr = [...rest,first]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40639 次 |
最近记录: |