今天给大家带来JavaScript对数组的操控的常用方法及其常见的应用场景。
向数组添加元素的方法:
1.Array.push(value1,value2,…)
- 向数组的末尾追加
- 返回值是添加数据后数组的新长度。
- 会改变原有数组
let arr = [1,2,3];
let result= arr.push(4,5);
console.log(result) //5
console.log(arr) //[1,2,3,4,5]
2.Array.unshift(value1,value2,…)
- 向数组的开头添加
- 返回值是添加数据后数组的新长度。
- 会改变原有数组
let arr = [1,2,3];
let result= arr.unshift(4,5);
console.log(result) //5
console.log(arr) //[4,5,1,2,3]
3.splice(index,0,value1,value2,…)
- 向数组的指定 index 处插入
- 返回的是被删除的元素。
- 会改变原有数组
如果只传入俩个参数那就是从【参数1】的位置删除【参数2】个数
let arr = [1,2,3];
let result = arr.splice(2,0,4,5);
console.log(result) //Array(0)
console.log(arr) //[1,2,4,5,3]
向数组删除元素的方法:
let arr = [1,2,3];
let result = arr.splice(2,0,4,5);
console.log(result) //Array(0)
console.log(arr) //[1,2,4,5,3]
1.pop()
- 从尾部删除一个元素
- 返回被删除掉的元素。
- 会改变原有数组
let arr = [1,2,3];
let result = arr.pop();
console.log(result) //3
console.log(arr) //[1,2]
2.shift()
let arr = [1,2,3];
let result = arr.pop();
console.log(result) //3
console.log(arr) //[1,2]
- 从头部删除一个元素
- 返回被删除掉的元素。
- 会改变原有数组
let arr = [1,2,3];
let result = arr.shift();
console.log(result) //1
console.log(arr) //[2,3]
let arr = [1,2,3];
let result = arr.shift();
console.log(result) //1
console.log(arr) //[2,3]
3.splice(index,howmany)
- 在 index 处删除 howmany 个元素,
- 返回的是被删除掉的元素的集合。
- 会改变原有数组
let arr = [1,2,3];
let result = arr.splice(1,2);
console.log(result) //[2,3]
console.log(arr) //[1]
数组排序的方法:
1.reverse()
- 反转,倒置
- 该方法会改变原有数组。
let arr = [1,2,3];
let result = arr.reverse();
console.log(result) //[3,2,1]
console.log(arr) //[3,2,1]
2.sort()
let arr = [1,2,3];
let result = arr.reverse();
console.log(result) //[3,2,1]
console.log(arr) //[3,2,1]
- 按指定规则排序
- 改变原有数组。
let arr = [2,1,3];
let result = arr.sort();
console.log(result) //[1,2,3]
console.log(arr) //[1,2,3]
注意: 如果你认为 sort 方法是让数组从小到大排序那就错了。 我们可以改变一下刚才的数组,加一些大一点的数字。
let arr = [25,148,12,6,38];
let result = arr.sort();
console.log(result) //[12, 148, 25, 38, 6]
console.log(arr) //[12, 148, 25, 38, 6]
有些朋友现在是不是稍微有一点懵了? 可是我们还是能找到一些规律的,他就是首先按照一个数字的第一个字符的大小去做比较,然后再用第二个字符去做比较,小的在前面,如果朋友们想让这个数组从真正的小到真正的大排序,那么我们可以改造一下刚才的代码。
let arr = [25,148,12,6,38];
let result = arr.sort((a,b) => a - b);
console.log(result) //[6, 12, 25, 38, 148]
console.log(arr) //[6, 12, 25, 38, 148]
如果想要从大到小排序那么就
let arr = [25,148,12,6,38];
let result = arr.sort((a,b) => b - a);
console.log(result) //[148, 38, 25, 12, 6]
console.log(arr) //[148, 38, 25, 12, 6]
总的来说,数组的 sort 方法里面的参数是一个回调函数,有俩个值,返回值如果是第一个值减去第二个值那么就是从小到大排序,如果是第二个值减去第一个值就是从大到小排序。
数组连接的方法:
1.concat()
- 数组连接
- 返回连接后的新数组。
let arr = [25,148,12,6,38],
arr2 = [1,5,8]
let result = arr.concat(arr2);
console.log(result) //[25, 148, 12, 6, 38, 1, 5, 8]
console.log(arr) //[25, 148, 12, 6, 38]
2.join()
let arr = [25,148,12,6,38],
arr2 = [1,5,8]
let result = arr.concat(arr2);
console.log(result) //[25, 148, 12, 6, 38, 1, 5, 8]
console.log(arr) //[25, 148, 12, 6, 38]
- 将数组的每个元素以指定分隔符(默认为“,”)连接成字符
- 返回该连接完成后的字符串。
let arr = [25,148,12,6,38];
let result = arr.join(),
result2 = arr.join('+')
console.log(result) //25,148,12,6,38
console.log(result2) //25+148+12+6+38
console.log(arr) //[25, 148, 12, 6, 38]
数组截取的方法:
let arr = [25,148,12,6,38];
let result = arr.join(),
result2 = arr.join('+')
console.log(result) //25,148,12,6,38
console.log(result2) //25+148+12+6+38
console.log(arr) //[25, 148, 12, 6, 38]
1.slice(start,end)
- 从 start 起始索引处,截取到 end 结束索引处
- 返回截取到的元素集合。 注意: 如果不传值那么就是直接拷贝了一份数组的值。 end 可以不传值,表示截取到数组的末尾。start 与 end 也可以取负值,取负值表示从后向前计数。
let arr = [1,2,3,4,5,6,7];
let result = arr.slice(),
result2 = arr.slice(2),
result3 = arr.slice(2,4);
console.log(result) //[1, 2, 3, 4, 5, 6, 7]
console.log(result2) //[3, 4, 5, 6, 7]
console.log(result3) //[3, 4]
console.log(arr) //[1, 2, 3, 4, 5, 6, 7]
数组转换的方法:
let arr = [1,2,3,4,5,6,7];
let result = arr.slice(),
result2 = arr.slice(2),
result3 = arr.slice(2,4);
console.log(result) //[1, 2, 3, 4, 5, 6, 7]
console.log(result2) //[3, 4, 5, 6, 7]
console.log(result3) //[3, 4]
console.log(arr) //[1, 2, 3, 4, 5, 6, 7]
1.toString()
- 转换为字符串,和不传参数的 join()一致,还可以使用 2,8,16 进制转变为不同结果。
let arr = [1,2,3,4,5,6];
let result = arr.toString();
console.log(result) //1,2,3,4,5,6
console.log(arr) //[1,2,3,4,5,6]
提取数组指定深度的方法
let arr = [1,2,3,4,5,6];
let result = arr.toString();
console.log(result) //1,2,3,4,5,6
console.log(arr) //[1,2,3,4,5,6]
比如说现在有一个这样的数组: [1,2,[3,4,[5,6]]], 我想将它输出为[1,2,3,4,5,6]。 如果自己去写递归的话还是比较麻烦的。 那么我们可以使用数组本身的 flat 方法来深度解析。 1.flat()
- 按照指定的深度递归遍历数组
- 返回值是遍历到的所有元素集合。
let arr = [1,2,[3,4,[5,6]]],
res = arr.flat(Infinity), //无限递归,直到最后
res2 = arr.flat(); //如果不传参数那么只递归一次
console.log(arr) //[1,2,[3,4,[5,6]]]
console.log(res) //[1, 2, 3, 4, 5, 6]
console.log(res2) //[1,2,3,4,[5,6]]