【ADT】数组

1、增、删、改

按序:

indexnamefunctioncomment
1push(e)在数组末尾插入e-
2unshift(e)在数组开头插入e-
3splice(start, delete_cnt, e1, e2, …, en)从start开始删除元素,然后在start处插入e1,e2,…,en细节+示例
4pop()将数组末尾e弹出-
5shift()将数组开头e弹出-
5splice(start, 1, e)将start处的元素替换为e-

2、查

indexnamefunctioncomment
1for-for(let i=0;i<arr.length;i++){ …arr[i]… }
2for of-for(let i of arr){ …i… }
3

3、连接数组

有arr1, arr2, arr3,需要按1\2\3的顺序连接

indexnamefunctioncomment
1解构运算符arr1 = [...arr1, ...arr2, ...arr3]
2old.concat(new1, new2, …)不会改变原数组,要声明新数组来接arr = arr1.concat(arr2,arr3)

4、与字符串互转

// string => Array
arr = str.split(regex);

// Array => sting
str = arr.join(s);
或者
str = arr.toString(); //带逗号

5、切片

Array.prototype.slice(start, end) 可用于复制原数组中(start, end] 的子数组,是 仅适合与一维数组的深拷贝, 很常用的几种情景如下:

// (1)深拷贝一个一维数组
recursion(arr.slice())

// (2)从start开始的剩余数组
arr.slice(start)

// (3)start或end用负数表示倒数第k个
[1,2,3].slice(-1);  // [3]
[1,2,3].slice(-2,-1); // [2]

6、遍历并操作

indexnamefunctioncomment
1map(fn(val, idx, arr), _this)给每个元素执行fn操作并返回新数组let root = arr.map(v=>Math.sqrt(v)) 示例
2every所有元素执行fn返回true结果才为true-
3some存在元素执行fn返回true结果就为true-
4filter返回一个执行fn为true的元素组成的数组-
5forEach同map,但无返回值-

7、原地反转数组

arr = [1,2,3];
arr.reverse();
arr;  // [3,2,1]

8、原地稳定排序数组

记得指定排序规则fn,fn返回值小于0升序,大于0降序,等于0按初始顺序(稳定排序)

arr = [1,11,20,2];
arr.sort();
arr; // [ 1, 11, 2, 20 ]
arr.sort((a,b) => a-b);
arr; // [ 1, 2, 11, 20 ]

9、累计器

MDN参考 暂不常用到

10、快速技巧

(1)使用Array.prototype.slice()将类数组对象转换为数组

function fn() {
    return Array.prototype.slice.call(arguments);
}
arr = fn(1,2,3)

结果为 [ 1, 2, 3 ], 作用同 Array.from

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值