js 数组常用方法,数组的拷贝(不影响原数组),数组相等

改变原数组的方法:

  1. pop();删除尾部的第一个元素并且返回这个元素;
var a = [1,2,3];
var b = a.pop();
console.log(a);//[1,2]
console.log(b);//3
  1. 类似方法:
    push();尾部推入;返回数组长度;
    shift();顶部弹出;返回该元素;
    unshift();顶部亚入;返回数组长度;
  2. reverse();反转数组;返回反转后的数组;
  3. splice();常用方法;返回被删除的数组成的数组,可以为[];

不改变原数组的方法:

  1. concat:返回拼接后的数组,不改变原数组;
  2. forEach;
  3. map;
  4. join();返回拼接后的字符串,可以指定间隔;
//attention:
[1,2,3].join('')
//"123"
[1,2,3].join()
//"1,2,3"
  1. slice(start,end);截取数组,返回截取的部分,不改变原始数组;
  2. sort();排序;传入一个函数作为参数,可以控制为升序,降序或者随机;(try用来产生随机数);
  3. toString();[1,2,3].toString()==[1,2,3].join();

数组拷贝

数组属于引用类型;简单的赋值只是添加了一个指向数组的指针;ex:

var a = [1,2,3];
var b = a;
b.push(2);
console.log(a)//[1,2,3,2]

那么如何实现独立的拷贝?介绍下面两种方法:两种方法性能上相差不大,不同浏览器内核上各有千秋:

//方法1
var a = [1,2,3];
var b = a.slice();
a.reverse;
console.log(a);//[3,2,1]
console.log(b);//[1,2,3]
//方法2
var c = [4,5,6];
var d = c.concat();
c.reverse();
console.log(c);//[6,5,4]
console.log(d);//[4,5,6]

数组相等

先说下坑吧:
任意两个数组相等都会返回false;[]=[];//false
怎么办?千万不要逐项去比较,看看上面可用的方法:toString();
转化为字符串一次就比较完了。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
拷贝和浅拷贝是在 JavaScript 中操作数组常用的两种拷贝方式。 浅拷贝是创建一个新的数组,将数组的元素复制到新数组中。但是,如果数组中的元素是对象或数组,那么新数组中的对应元素仍然会引用数组中的对象或数组。这意味着修改新数组中的元素也会影响数组。常见的浅拷贝方法有: 1. 使用 Array.prototype.slice() 方法: ```javascript var shallowCopy = originalArray.slice(); ``` 2. 使用 Array.prototype.concat() 方法: ```javascript var shallowCopy = [].concat(originalArray); ``` 3. 使用 ES6 的扩展运算符(...): ```javascript var shallowCopy = [...originalArray]; ``` 深拷贝是创建一个全新的数组,将数组中的所有元素递归地复制到新数组中。这样就可以避免修改新数组中的元素对数组产生影响。常见的深拷贝方法有: 1. 使用 JSON 对象的方法: ```javascript var deepCopy = JSON.parse(JSON.stringify(originalArray)); ``` 注意:这种方法只适用于能够被序列化为 JSON 的对象,对于包含函数、正则表达式等特殊对象可能会出现问题。 2. 使用递归进行深拷贝: ```javascript function deepClone(source) { if (typeof source !== 'object' || source === null) { return source; } var target = Array.isArray(source) ? [] : {}; for (var key in source) { if (source.hasOwnProperty(key)) { target[key] = deepClone(source[key]); } } return target; } var deepCopy = deepClone(originalArray); ``` 这些是常见的浅拷贝和深拷贝方法,根据实际需求选择合适的方法来进行数组拷贝操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值