js向一个数组中插入元素的几个方法-性能比较
2017-01-11 15:32
507 查看
向一个数组中插入元素是平时很常见的一件事情。你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素。
但是这些已知的方法,并不意味着没有更加高效的方法。让我们接着往下看……
两种方法都是修改原始数组。不信?看看jsperf
手机上的效率
桌面上的效率
向数组的头部添加元素
现在我们试着
这里有一些小区别,unshift操作的是原始数组,concat返回一个新数组,参考jsperf
手机上的效率:
桌面上的效率
我在许多浏览器和系统中进行了测试,结果都是相似的。希望这条小知识可以帮到你,也欢迎大家自行测试。
源:http://www.cnblogs.com/rubylouvre/p/5751564.html
但是这些已知的方法,并不意味着没有更加高效的方法。让我们接着往下看……
向数组结尾添加元素
向数组结尾添加元素用push()很简单,但下面有一个更高效的方法vararr=[1,2,3,4,5]; vararr2=[]; arr.push(6); arr[arr.length]=6; arr2=arr.concat([6]);
两种方法都是修改原始数组。不信?看看
手机上的效率
Android(v4.2.2) arr.push(6);andarr[arr.length]=6;性能相同//3319694ops/sec arr2=arr.concat([6]);比其他两个方法慢50.61% ChromeMobile(v33.0.0) arr[arr.length]=6;//6125975ops/sec arr.push(6);慢66.74% arr2=arr.concat([6]);慢87.63% SafariMobile(v9) arr[arr.length]=6;//7452898ops/sec arr.push(6);慢40.19% arr2=arr.concat([6]);慢49.78% ``
最快的为
1.arr[arr.length]=6;//平均5632856ops/sec 2.arr.push(6);//慢35.64% 3.arr2=arr.concat([6]);//慢62.67% ```
桌面上的效率
Chrome(v48.0.2564)最快的为
arr[arr.length]=6;//21602722ops/sec
arr.push(6);慢61.94%
arr2=arr.concat([6]);慢87.45%
Firefox(v44)
arr.push(6);//56032805ops/sec
arr[arr.length]=6;慢0.52%
arr2=arr.concat([6]);慢87.36%
IE(v11)
arr[arr.length]=6;//67197046ops/sec
arr.push(6);慢39.61%
arr2=arr.concat([6]);慢93.41%
Opera(v35.0.2066.68)
arr[arr.length]=6;//30775071ops/sec
arr.push(6);慢71.60%
arr2=arr.concat([6]);慢83.70%
Safari(v9.0.3)
arr.push(6);//42670978ops/sec
arr[arr.length]=6;慢0.80%
arr2=arr.concat([6]);慢76.07%
1.arr[arr.length]=6;//平均42345449ops/sec
2.arr.push(6);//慢34.66%
3.arr2=arr.concat([6]);//慢85.79%
向数组的头部添加元素
现在我们试着
向数组的头部添加元素
vararr=[1,2,3,4,5];
arr.unshift(0);
[0].concat(arr);
这里有一些小区别,unshift操作的是原始数组,concat返回一个新数组,参考
手机上的效率:
Android(v4.2.2)最快的为
[0].concat(arr);//1808717ops/sec
arr.unshift(0);慢97.85%
ChromeMobile(v33.0.0)
[0].concat(arr);//1269498ops/sec
arr.unshift(0);慢99.86%
SafariMobile(v9)
arr.unshift(0);//3250184ops/sec
[0].concat(arr);慢33.67%
1.[0].concat(arr);//平均4972622ops/sec
2.arr.unshift(0);//慢64.70%
桌面上的效率
Chrome(v48.0.2564)最快的为
[0].concat(arr);//2656685ops/sec
arr.unshift(0);慢96.77%
Firefox(v44)
[0].concat(arr);//8039759ops/sec
arr.unshift(0);慢99.72%
IE(v11)
[0].concat(arr);//3604226ops/sec
arr.unshift(0);慢98.31%
Opera(v35.0.2066.68)
[0].concat(arr);//4102128ops/sec
arr.unshift(0);慢97.44%
Safari(v9.0.3)
arr.unshift(0);//12356477ops/sec
[0].concat(arr);慢15.17%
1.[0].concat(arr);//平均6032573ops/sec
2.arr.unshift(0);//慢78.65%
向数组中间添加元素
使用splice可以简单的向数组中间添加元素,这也是最高效的方法。varitems=['one','two','three','four'];
items.splice(items.length/2,0,'hello');
我在许多浏览器和系统中进行了测试,结果都是相似的。希望这条小知识可以帮到你,也欢迎大家自行测试。
源:http://www.cnblogs.com/rubylouvre/p/5751564.html
相关文章推荐
- 关于JS中把二维数组变为一个数组的几个方法
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- 编写js扩展方法判断一个数组中是否包含某个元素
- js一个简单的方法实现数组中元素相加
- [jstips]向数组中插入一个元素
- 比较一个数组中,是否有相等的元素的不同方法比较
- js的一个选择数组中所有符合条件的元素并删除的方法
- 给数组添加一个根据指定下标删除元素的方法、得到0-100的随机数不重复(js)、得到外联样式的css样式值
- js 将一个数组插入到另一个数组的方法
- JavaScript 删除数组中一个元素--delete与赋值为undefined方法比较
- JS从数组中随机取出几个数组元素的方法
- js:splice()方法(从一个数组中移除一个或多个元素)
- 几种向数组中添加元素方法的性能比较
- JS:调用方法实现向数组中追加一个元素
- js中数组插入、删除元素操作的方法
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- 编写js扩展方法判断一个数组中是否包含某个元素
- 比较一个数组中,是否有相等的元素的不同方法比较
- js中两个常用方法(1.获取当前工程的虚拟目录;2.移除数组指定位置上的元素)