js-数组

数组的几种方法

join()

Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素,如不指定的话,默认为”,”

1
2
3
4
var array = [1,2,3,4,5,6];    //创建数组
a.join(); //生成"1,2,3,4,5,6"
a.join(" ") //中间传入一个空格,生成"1 2 3 4 5 6"
a.join(""); //传入空值,生成"123456"

reverse()

Array.reverse()方法将数组中的元素颠倒顺序,返回逆序的数组,采取替换。它不通过重新排列的元素创建新的数组,而是在原先的数组中重新排列它们。

sort()

Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序。如果包含undefined元素,它们会被排到数组的尾部。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var a = [33,4,1111,222];
a.sort(); //字母表顺序: 1111,222,33,4
//给sort()方法里面传入比较函数,根据数值进行排序
a.sort(function(a,b){
return a-b; //根据顺序,返回负数、0、正数
}); //数值顺序: 4,33,222,1111
a.sort(function(){
return b-a; //数值逆序: 1111,222,33,4
});
var b = ['ant','Bug','cat','Dog'];
b.sort(); //区分大小写的排序:['Bug','Dog','ant','cat']
b.sort(funciton(s,t){
var a = s.toLowerCase();
var b = t.toLowerCase();
if(a<b) return -1;
if(a>b) return 1;
return 0
}); // ['ant','Bug','cat','Dog']

concat()

Array.concat()方法创建并返回一个新数组,它的元素包括调用concat()的原始数组的元素和concat()的每个参数。如果这些参数的任何一个自身是数组,则链接的是数组的元素,而非数组本身。
但是,concat()不会递归扁平化数组的数组。concat()也不会修改调用的数组。

1
2
3
4
5
var a = [1,2,3];
a.concat(4,5); // 返回: [1,2,3,4,5] 直接连接
a.concat([4,5]); // 返回:[1,2,3,4,5] 连接数组中的元素
a.concat([4,5],[6,7]); // 返回: [1,2,3,4,5,6,7] 连接数组中的元素
a.concat(4,[5,[6,7]]); // 返回: [1,2,3,4,5,[6,7]] 不会递归扁平化数组的数组

slice()

Array.slice()方法返回指定数组的一个片段或子数组.它的两个参数分别指定了片段的开始和结束的位置。返回的数组包含第一个参数指定的位置和所有到但不包含第二个参数指定的位置之间的所有数组元素。
如果就指定了一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。
如果参数中出现负数,它表示相对于数组中最后一个元素的位置.
例子就不写了.这个更多的应该是自己去写一下,才能有更深刻的体会.

纸上得来终觉浅,绝知此事要躬行.

splice()

Array.splice()方法是在数组中插入或删除元素的通用方法。能够从数组中删除元素,插入元素到数组中或者同事完成这两种操作。在插入或删除点之后的数组元素会根据需要增加或减小他们的索引值,因此数组的其他部分仍然保持连续。
splice()的第一个参数指定了插入和删除的起始位置。第二个参数指定了应该从数组中删除的元素的个数。如果省略第二个参数,从起始点开始到数组的结尾的所有元素都将被删除。
splice()返回一个有删除元素组成的数组,或者如果没有删除元素就返回一个空数组。
splice()的前两个参数指定了需要删除的数组元素。紧随其后的任意个数的参数指定了需要插入到数组中的元素,从第一个参数指定的位置开始插入。

push()和pop()

push()方法在数组的尾部添加一个或多个元素,并返回数组新的长度。pop()方法则相反:它删除数组的最后一个元素,减小数组的长度并返回它删除的值。
注意两个方法都修改并替换原始数组,而非生成了一个修改版的新数组。

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

unshift()和shift()

unshift()和shift()类似push()和pop(),不一样的是前者是在数组的头部进行操作的。至于其他的,就请小伙伴自行脑补了。

####思考??
当使用多个参数调用unshift()时,会出现怎么样的行为呢?

toString()和toLocaleString()

toString()方法将数组中的每个元素转化成字符串,并且输出用逗号分隔的字符串列表。
注意,输出不包括方括号或其他形式的包裹数组值的分隔符。

1
2
3
[1,2,3].toString();                  //生成'1,2,3'
["a","b","c"].toString(); //生成'a,b,c'
[1,[2,'c']].toString(); //生成'1,2,c'

toLocaleString()是toString()方法的本地化版本。它调用元素的toLocaleString()方法将每个数组元素转化为字符串,并且使用本地化(和自定义实现的)分割符将这些字符串连接起来生成最终的字符串。