`
当时我就震惊了
  • 浏览: 33115 次
  • 性别: 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 三种数组复制方法的性能对比

    综上所述,slice和concat都是处理JavaScript数组复制时较为简便和快速的方法,但concat在WebKit内核的浏览器上表现更佳,而slice在其他浏览器上更优。在进行大规模数组操作时,性能测试显得尤为重要,因为它可以帮助...

    JavaScript对象与数组参考大全

    6. **扩展运算符**:ES6引入的`...`运算符用于复制或合并数组。 7. **数组解构赋值**:允许从数组或对象中提取值,直接赋值给变量。 8. **静态方法**:如`Array.from()`将类似数组或可迭代对象转换为真正的数组,`...

    JavaScript中的数组特性介绍.docx

    在这个文档中,我们将深入探讨JavaScript数组的三个关键特性以及四种创建数组的方法。 1. **无类型(Untyped)** JavaScript数组的一个显著特点是其成员可以是任何类型。这意味着同一个数组可以包含数字、字符串、...

    JavaScript 数组的深度复制解析

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

    Javascript数组操作整理.rar

    本资料"Javascript数组操作整理"聚焦于JavaScript中的数组操作,旨在帮助开发者更好地理解和掌握相关知识。 1. 创建数组: JavaScript提供了多种创建数组的方式,如字面量语法`var arr = [元素1, 元素2, ...]`,或...

    JavaScript数组复制详解

    在JavaScript中,数组是一种引用类型,它存储一系列有序的数据项。由于数组是引用类型,当我们试图复制数组时,问题变得复杂。复制一维数组相对简单,但如果数组包含其他数组或其他引用类型的元素,比如对象,情况就...

    JavaScript中数组的22种方法必学(推荐)

    本文将深入讲解JavaScript数组的22种必学方法,按照功能分为10类进行解析。 1. **对象继承方法** - `toString()`:将数组转换为以逗号分隔的字符串。例如,`[1,2,3].toString()`返回`'1,2,3'`。在`alert()`等需要...

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

    总的来说,`copyWithin()`和`fill()`是JavaScript数组操作的两个实用工具,它们提供了高效且灵活的方式来处理数组内容,而不会改变数组的长度。这两个方法在实际开发中尤其适用于数据处理和初始化数组等场景。

    JavaScript【数组和对象(1)】

    在JavaScript中,数组的声明有两种方式: 1. `var arr = [value1, value2, ...];` 2. `let arr = new Array(value1, value2, ...);` 数组的索引从0开始,可以通过索引来访问或修改数组元素,如`arr[0]`。数组还有...

    JavaScript中数组的一些算法和技巧总结

    ` 也可以创建空数组,但更常用的是前一种方式。 - 初始化数组:`let arr = [1, 2, 3];` 或 `let arr = new Array(1, 2, 3);` - 创建预定义长度的数组:`let arr = new Array(5);` 这将创建一个长度为5的空数组。 ...

    复制数组或从数组中抽取特定元素组成新数组

    在JavaScript中,有几种方法可以实现数组的复制: #### 1. 使用 `slice()` 方法 `Array.prototype.slice` 是一种非常直观且高效的方法来复制数组。这个方法返回一个新的数组对象,这个数组包含从start到end(不...

    Javascript 复制数组实现代码

    文档提供了一个HTML页面示例,其中包含三个按钮,分别对应上述三种不同的数组复制方法。用户可以点击按钮并观察结果,以验证哪种复制方法有效。 ```html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "***"> ...

    JavaScript对JSON数组简单排序操作示例

    此外,由于JavaScript的sort方法直接在原数组上进行排序,如果需要保留原始数组,可以先对原数组进行复制,然后在复制的数组上执行排序操作。 JavaScript提供的sort方法非常灵活,不仅可以对简单数据类型进行排序,...

    JavaScript模拟数组合并concat_.docx

    需要注意的是,这两种方法都涉及到数组的复制,因为数组是引用类型,直接复制数组会创建一个指向原始数组的引用,而非全新的独立副本。因此,我们需要使用循环或其他方法确保创建的是独立的、不含原始数组引用的新...

    javascript之Array 数组对象详解

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

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

    本文实例讲述了javascript二维数组和对象的深拷贝与浅拷贝。分享给大家供大家参考,具体如下: 这篇文章主要为大家详细介绍了js实现数组和对象的深浅拷贝, 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新...

    JavaScript 中有关数组对象的方法(详解)

    如果不提供`end`参数,它将复制从开始到数组末尾的所有元素。`concat()`方法可以将多个数组或值连接成一个新的数组,返回这个新数组。 数组的拷贝可以通过`slice()`或`concat()`实现。`arr.slice(0)`和`arr.concat...

Global site tag (gtag.js) - Google Analytics