JS 数组克隆方法总结

ES5 方法总结

1.slice

let arr = [2,4,434,43]
let arr1= arr.slice()
arr[0] = ‘a‘
console.log(arr,arr1) // [ 2, 4, 434, 43 ]
console.log(arr1 === arr) // false

2. 遍历数组

Array.prototype.clone = function(){
    let a=[];
    for(let i=0,l=this.length;i<l;i++) {
        a.push(this[i]);
    }
    return a;
}
let arr = [‘aaa‘,‘bbb‘,‘ccc‘,‘wwwww‘,‘ddd‘]
let arr2 = arr.clone()
console.log(arr2)
console.log( arr2 === arr )

3. concat()

Array.prototype.clone=function(){

    return [].concat(this);
    //或者 return this.concat();
}
let arr = [‘aaa‘,‘asss‘]
let arr1 = arr.clone()
arr[0] = 123
console.log(arr,arr1)

ES6 方法总结

1. Object.assign() 浅复制,也可以实现数组的克隆

let arr = [‘sdsd‘,123,123,123]
let arr1 = []
Object.assign(arr1,arr)
arr[1] = ‘aaaa‘
console.log(arr,arr1) // [ ‘sdsd‘, ‘aaaa‘, 123, 123 ] [ ‘sdsd‘, 123, 123, 123 ]

2. 扩展运算符

const a1 = [1, 2];
// 写法一
const a2 = [...a1];
a1[0] = ‘aaa‘
console.log(a1,a2)

欢迎补充其他方法!!!

原文地址:https://www.cnblogs.com/makai/p/11249982.html

时间: 2024-10-23 20:29:32

JS 数组克隆方法总结的相关文章

JS 数组及其方法浅析

近来闲来无事,小码哥突发奇想,手一哆嗦,就把javascript中的数组及其方法小小总结了一下! 在JS里我们很抽象的理解万物皆对象,这大概也是,我们现在在写Js代码的时候,都善于用面向对象的方式写程序的根由吧....不多说,数组Array也是对象无疑了! 首先,我们肯定应该知道什么是数组?其又是如何定义的?都有哪些优点?这都是我们关心的,,, 数组定义:数组说白了就是数据的集合,在内存中,是一块连续内存的地址:JS中数组分为一维数组和多维数组. 定义方式: 1.直接量定义:var Arr=[e

JS数组遍历方法集合

就让我们在逆战中成长吧,加油武汉,加油自己 1.for循环 使用零时变量将长度存起来,当数组较大时优化效果才会比较明显. var ar1=[2,4,6,8] for(var i=0;i<ar1.length;i++){ console.log(i) console.log(ar1[i]) } 2.foreach循环 遍历数组中每个数,没有返回值 使用break不能中断循环,使用return也不能返回到外层函数 var ar1=[2,4,6,8] ar1.foreach((item,index,a

JS 数组迭代方法

js中数组迭代方法有五种 some() , every(), filter(), forEach(),map(),传入这些方法的函数会接收三个参数(数组项的值,该项在数组中的位置,数组对象本身) var items = [9,67,34,25,56]; //如果items中的所有项都大于9返回true否则返回false 全部满足条件才行 var everyResult = items.every(function(item,index,array){ return (item>9); }); a

js数组遍历方法总结

数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. for(j = 0,len=arr.length; j < len; j++) { } 2.foreach循环 遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE //1 没有返回值 arr.forEach((item,index,array)=>{ //执行代码 }) //参数:value数组中的当前项, index当前项的索引, array原始数组: //数组中有

js 数组克隆

在JS中,对于对象类型的变量的引用是通过类似C之类的"指针"的方式来操作的,及如果多个变量引用同一个对象,则任意一个变量对对象的操作都会影响到其它的变量. 这个可能不是很明白,下面给出一个例子 var a=[1,2,3,4]; var b= a; var c=b; c.pop(); alert('a:'+a.length); alert('b:'+b.length); alert('c:'+c.length); 你可能会认为弹出的结果为:a:4,b:4,c:3或者a:4,b:3,c:3

在js对象上绑定js数组原生方法

在js对象上绑定数组方法会给当前对象添加一个lenght:0属性 例: var o = {}; [].pop.call(o) console.log(o)//返回结果Object {length: 0}

js数组去重方法

这里提供了3种方法,都比较常见,可以一种一种往下看,越往下,性能越高. 第一种是比较常规的方法,思路如下: 1.构建一个新的数组,新的数组同其中一个一样,存放结果 2.for循环中每次从另一个数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 代码如下: var arr1 = [1,2,3,4,5,6]; var arr2 = [9,8,7,6,5,4]; var arr = unitArray( arr1,arr2 ); alert(arr); fu

三种常用的js数组去重方法

第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++){ var repeat = false; for(var j = 0; j < res.length; j++){ if(t

js 数组 map方法

map这里的map不是“地图”的意思,而是指“映射”.[].map(); 基本用法跟forEach方法类似: array.map(callback,[ thisObject]); callback的参数也类似: [].map(function(value, index, array) { // ... }); map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组.下面这个例子是数值项求平方: var data = [1, 2, 3, 4]; var arrayOfSquare