`
当时我就震惊了
  • 浏览: 32483 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Javascript 三种数组复制方式

 
阅读更多

 /*
  Array Object
  refer to: http://www.w3schools.com/jsref/jsref_obj_array.asp
 */
  



 //最快的
 直接 = 复制操作是最快的。快一个数量级
 arr = arrCopy

 //1.by slice
 var arr = [1,2,3],copyArr;
 copyArr = arr.slice();

 //2.by concat
 var arr = [1,2,3],copyArr;
 copyArr = arr.concat(); 

 //3.loop
 var arr =[1,2,3],copyArr = []
 for(var i = 0; i = arr.length; i++)
    coypArr[i] = arr[i];

//IE 下 的执行效率为 slice > concat > loop
//Firefox 下执行效率一致 slice = concat = loop
//chrome 下执行效率 concat > slice > loop
//safari 执行效率 slice >~~ concat > loop
  //>~~ 几乎相等
  //>~  相差不大

/*

 总体来说 数组复制 不要选择 loop 进行(除非必要),除chorme下 concat 快于 slice外,其他的全部为 slice最快。
 
*/



/*
 function: concat()
 arguments counts: no limitation.
 arguments: array or string
 syntax: array.concat(string,string....);
         array.concat(string,array....);
 describe: base on current array generate a new array.
           基于当前数组创建新数组
*/
//example:
 var arr = ["black","white","red"], arrCopy;
 arrCopy = arr.concat("green",["array_green","array_red"],"yellow");
//result:
 arrCopy : black,white,red,green,array_green,array_red,yellow

/*
 function: slice()
 arguments counts:1 or 2
 arguments: int (;var)
 syntax: array.slice(start,end);
         array.slice(start);
 describe: return specified range of a string
           返回指定范围的数组
*/
  var arr = ["black","white","red","green"], arrCopy;
  arrCopy = arr.slice(1);
  //if argument is one,will return to the end as default
  //if the range is bigger than the array's maximum length,it will return a string with length of 0,like '' 
  //result: white,red,green;

  arrCopy = arr.slice(1,2);  
  //result:white,red;

 /*
  function: splice()//会影响原始数组
  arguments counts: index,howmany,items....
  syntax: array.splice(index,howmany,item1,.....,itemX)
  describe: splice array; 没有返回值操作当然数组
  reference: http://www.w3schools.com/jsref/jsref_splice.asp
 */
 var fruits = ["Banana", "Orange", "Apple", "Mango"];
 fruits.splice(2,0,"Lemon","Kiwi");
 //result:"Banana", "Orange", "Apple","Lemon","Kiwi","Mango"
 fruits.splice(1,2,"Lemon","Kiwi");
 //result:"Banana","Lemon","Kiwi","Mango"
分享到:
评论

相关推荐

    javascript 三种数组复制方法的性能对比

    javascript 三种数组复制方法的性能对比,对于webkit, 使用concat; 其他浏览器, 使用slice.

    【JavaScript源代码】ES6数组复制和填充方法copyWithin()、fill()的具体使用.docx

    ES6数组复制和填充方法copyWithin()、fill()的具体使用  目录 批量复制 copyWithin() 填充数组方法 fill() 关于索引的计算方式,两种方法相同 批量复制 copyWithin()  填充数组方法 fill()  关于索引的计算方式...

    JavaScript 数组的深度复制解析

    对于javascript而言,数组是引用类型,如果要想复制一个数组就要动脑袋想想了,因为包括concat、slice在内的函数,都是浅层复制。也就是说,对于一个二维数组来说,用concat来做复制,第二维的数组还是引用,修改了...

    JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是对象 Javascript不支持多维数组,但是因为数组里面可以...

    JavaScript数组复制详解

      前面的博文中介绍了对象拷贝,本文将详细介绍数组复制 push function copyArray(arr){ var result = []; for(var i = 0; i < arr.length; i++){ result.push(arr[i]); } return result; } var obj1=[1...

    javascript之Array 数组对象详解

    1、创建Array对象方法: —>var arr = [element0, element1, …, ...//定义一个没有任何内容的数组对象,然后以下面的方式为其赋值 arr[0] = “arr0”; arr[1] = “arr1”; arr[2] = “arr2”; —>new Array(size

    javascript二维数组和对象的深拷贝与浅拷贝实例分析

    主要介绍了javascript二维数组和对象的深拷贝与浅拷贝,结合实例形式分析了JavaScript针对数组与对象的深拷贝及浅拷贝相关操作技巧,需要的朋友可以参考下

    javascript如何定义对象数组

    问题如下,已经完成单个对象的简单应用,希望定义一个数组,能包含多个student。 复制代码 代码如下:var student = new Object(); student.name = “Lanny”; student.age = “25”; student.location = “China...

    Javascript 复制数组实现代码

    Javascript 复制数组实现代码,需要的朋友可以参考下。

    javascript二维数组转置实例

    本文实例讲述了javascript二维数组转置的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:[removed] var arr1 = [[30,-1,90],[70,100,-40],[39,29,6],[39,92,9]]; var arr2 = []; //确定新数组有...

    JavaScript中使用数组方法汇总

    定义数组 复制代码 代码如下: Var arryMap = {riskId:”<%=riskid%>”,riskType:”<%=risktype%>”}; 或 复制代码 代码如下: Var arry =[]; 使用: var risk = arryMap.riskId; Arry.push({id:”1...

    javascript数组与php数组的地址传递及值传递用法实例

    本文实例讲述了javascript数组与php数组的地址传递及值传递用法。分享给大家供大家参考。具体如下: javascript数组为地址传递/引用传递,而php数组为值传递 实例代码如下: 复制代码 代码如下:<?php $arr = ...

    JavaScript中concat复制数组方法浅析

    在本篇文章里小编给大家总结了关于JavaScript中concat复制数组方法知识点,有需要的朋友们可以学习下。

    javascript中数组深拷贝途径及对象数组深拷贝

    在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用“=”来直接把一个数组赋值给一个变量,如: var a=[1,2,3]; var b=a; console.log(b); //输出的是1,2,3 a[2]=0; console.log(b); //输出的是1,2,0 ...

    JavaScript数组和对象的复制

    本篇文章主要介绍了JavaScript数组和对象的复制的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧

    javascript数组去掉重复

    我们给数组原型上面添加去重的方法distinct,用第一种很容易想到的方法来实现,当然也是很笨很直接的,把这个数组复制一份然后循环两个数组,对比当前值与后面所有的值是否相等,如果与后面所有值都不等则把该值存到...

Global site tag (gtag.js) - Google Analytics