天花乱坠的数组方法(二)

      上篇文章中很详细的说了 ES6 当中常用的数组方法,本篇文章快刀斩乱马的根据”原数组是否会被修改”的分类说下 ES5 中常见的数组方法吧

原数组不会被修改

数组转换为字符串:join()

二话不说,上代码:

1
2
3
4
5
var arrJoin= [1,2,3,4,5];
console.log(arrJoin.join("")); //12345
console.log(arrJoin.join("❤️")); //1❤️2❤️3❤️4❤️5
// 事实证明:原数组不会被修改
console.log(arrJoin); //[1, 2, 3, 4, 5]

来个实用的场景吧:将某个字符重复 n 次

1
2
3
4
5
function repeat(str,n){
return new Array(n+1).join(str);
}
console.log(repeat("哈",3)); //哈哈哈
console.log(repeat("hi",5));//hihihihihi

数组的合并:concat()

看看怎么用?

1
2
3
4
5
6
7
8
var arrConcat = [1,2,3];
console.log(arrConcat.concat(4,5)); //[1, 2, 3, 4, 5]
// 会被拉平为一维数组
console.log(arrConcat.concat(4,5,[6,7])); //[1, 2, 3, 4, 5, 6, 7]
//数组中还有数组时,不会被拉平
console.log(arrConcat.concat(4,[5,[6,7]])); //[1, 2, 3, 4, 5,[6,7]]
//concat()不会改变原数组
console.log(arrConcat); //[1, 2, 3]

返回部分数组:slice()

任性上代码:

1
2
3
4
5
6
7
var arrSlice = [1,2,3,4,5];
console.log(arrSlice.slice(1)); //[2,3,4,5]
console.log(arrSlice.slice(0,2)); //[1,2]
console.log(arrSlice.slice(1,4)); //[2,3,4]
console.log(arrSlice.slice(1,-1)); //[2,3,4]
console.log(arrSlice.slice(2,-1)); //[3,4]
console.log(arrSlice); //[1,2,3,4,5]

看完代码后,我们可以总结下 slice()的用法:
slice(start,end)
start:必须参数,指从何处开始截取,包含该处
end:可选参数,指从何处结束截取,不包含该处,该参数为负数时,指从数组尾部开始算起的位置

原数组会被修改

数组逆序:reverse()

1
2
3
4
var arrReverse = [1,2,3,4,5];
console.log(arrReverse.reverse()); //[5, 4, 3, 2, 1]
// 注意:原数组被修改了哦
console.log(arrReverse); //[5, 4, 3, 2, 1]

数组排序:sort()

1
2
3
4
5
6
7
var arrSort = ['a','c','e','b','d'];
console.log(arrSort.sort()); //["a", "b", "c", "d", "e"]
// 注意:原数组被修改了哦
console.log(arrSort); //["a", "b", "c", "d", "e"]
//让我们再来看看数字
var arrSortNumber = [1,19,2,25,8];
console.log(arrSortNumber.sort()); //[1, 19, 2, 25, 8]

可以看到 arrSortNumber 没有按照我们期望的输出,因为如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。让我们看看如何对数字进行正确的排序。

1
2
3
4
5
6
7
8
9
var arrSortNumber = [1,19,2,25,8];
// 升序排列
console.log(arrSortNumber.sort(function(a,b){
return a-b; //[1, 2, 8, 19, 25]
}));
// 降序排列
console.log(arrSortNumber.sort(function(a,b){
return b-a; //[[25, 19, 8, 2, 1]
}));

数组拼接:splice()

1
2
3
4
5
6
7
8
9
10
var arrSplice = ['a','c','e','b','d'];
console.log(arrSplice.splice(2)); //['e','b','d']
// 注意:原数组被修改了
console.log(arrSplice); //["a", "c"]
var arrSplice2 = ['b','c','e','b','d'];
console.log(arrSplice2.splice(2,2)); //['e','b']
console.log(arrSplice2); //[["b", "c", "d"]
var arrSplice3 = ['c','c','e','b','d'];
console.log(arrSplice3.splice(2,2,'h','j')); //["e", "b"]
console.log(arrSplice3); //["c", "c", "h", "j", "d"]

从以上代码可以总结下 splice()的使用方法
splice(start,number,item);
start:必选参数,代表要删除的起始位置,包括该位置
number:可选参数,删除的个数
item: 可选参数,插入的片段

数组增删:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var arrOperate = [];
//push()数组尾部增加元素
arrOperate.push(1,2);
console.log(arrOperate); //[1,2]
//通过length的方式在尾部增加元素
arrOperate[arrOperate.length] = 3;
console.log(arrOperate);//[1,2,3]
//在数组头部增加元素
arrOperate.unshift(-1,0);
console.log(arrOperate); //[-1,0,1,2,3]
//delete方法只是将对应元素改成Undefined
delete arrOperate[0];
console.log(arrOperate); //[undefined,0,1,2,3]
如果0位置设置为"undefined",则为true
console.log(0 in arrOperate); //false
//pop()删除元素的最后一位
arrOperate.pop();
console.log(arrOperate); //[undefined,0,1,2]
//pop()删除元素的第一位
arrOperate.shift();
console.log(arrOperate); //[0,1,2]

Copyright ©2019 guowj All Rights Reserved.

访客数 : | 访问量 :