JS-数组方法

1、join()

Array.join()方法将数组中所有因素还转发为字符串并连在一块儿,返回最后生成的字符串。

1 var a = [1,2,3];
2 a.join(); // => "1,2,3"
3 a.join(" "); // => "1 2 3"
4 a.join(""); // => "123"
5 var b = new Array(10);
6 b.join('-'); // => '---------' :9个连字号组成的字符串

Array.join()是Sting.split()的逆向操作,后者以字符串分割成几何块来创造一个数组。

2、reverse()

Array.reverse()将数组中的要素点至各个,返回逆序的数组。它是以原数组中重新排列它们。

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

3、sort()

Array.sort()将数组中的素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序(如发必要将临时转会为字符串进行较)。

1 var a = new Array("banana","cherry","apple");
2 a.sort(); // ["apple","banana","cherry"]

比方数组包含undefined元素,则它们会吃除掉至数组尾部。

当带参数时,必须被sort()方法传递一个比函数:

  • 倘第一独参数应该以前头,则归负值。
  • 一旦简单只参数相等,则归零。
  • 只要第第二个参数应该在前,则归正值。

    1 var a = [33,4,1111,222];
    2 a.sort(); // 字母表顺序:[1111,222,33,4]
    3 a.sort(function(a,b){ // 数值顺序[4,33,222,1111]
    4 return a-b;
    5 });
    6 a.sort(function(a,b){return b-a}); // 数值大小相反顺序

    1 var a = [‘ant’,’Bug’,’cat’,’Dog’];
    2 a.sort(); // 区分轻重缓急写排序:[‘Bug’,’Dog’,’ant’,’cat’]
    3 a.sort(function(s,t){ // 不区分轻重缓急写排序
    4 var a = s.toLowerCase();
    5 var b = t.toLowerCase();
    6 if(a < b) return -1; 7 if(a > b) return 1;
    8 return 0;
    9 }); // [‘ant’,’Bug’,’cat’,’Dog’]

 4、concat()

Array.concat()创建并回一个初数组,它包括调用它的原始数组的元素以及concat()每个参数。concat()不见面递归扁平化数组的频繁组,也无见面修改调用的数组。

1 var a = [1,2,3];
2 a.concat(4,5); // [1,2,3,4,5]
3 a.concat([4,5]); // [1,2,3,4,5]
4 a.concat([4,5],[6,7]); // [1,2,3,4,5,6,7]
5 a.concat(4,[5,[6,7]]); // [1,2,3,4,5,[6,7]] 

5、slice()

Array.slice()返回指定数组的一个组成部分或子数组。两单参数分别指定了有些的发端与了结位置,返回的数组包含第一单参数的职位及无含第二只参数的职的所有数组元素。

一旦只有指定第一只参数,则归从上马位置到数组结尾的有着因素。

如若参数中冒出负数,它代表相对于最后一个素的职。

1 var a = [1,2,3,4,5];
2 a.slice(0,3);   // [1,2,3]
3 a.slice(3);     // [4,5]
4 a.slice(1,-1);  // [2,3,4]
5 a.slice(-3,-2); // [3]

6、splice()(先去后插入)

Array.splice()是于数组吃插或删除元素的通用方。splice()会修改调用的数组。splice()返回一个出于删除元素做的屡屡组,或者如没有删除元素虽然赶回一个空数组。

第一个参数指定了插入和(或)删除的序曲位置;

其次个参数指定了应该从数组中剔除的要素个数,如果简单,将去到数组结尾。

1 var a = [1,2,3,4,5,6,7,8];
2 a.splice(4); // 返回[5,6,7,8];a是[1,2,3,4]
3 a.splice(1,2); // 返回[2,3];a是[1,4]
4 a.splice(1,1); // 返回[4];a是[1]

于第三只参数开始,指定了特需插入到数组中元素,从第一单参数指定的位置上马插入。

1 var a = [1,2,3,4,5];
2 a.splice(2,0,'a','b'); // 返回[];a 是[1,2,'a','b',3,4,5]
3 a.splice(2,2,[1,2],3); // 返回['a','b'];a是[1,2,[1,2],3,4,5]

7、push和pop()

push()和pop()允许以数组当做栈来使用。

push()在反复组尾部添加一个要么多只元素,并回到数组的新长。pop()则去数组的末尾一个要素,减多少数组的尺寸并返回其去的价值。两单道都用改原始数组。

1 var stack = [];
2 stack.push(1,2); // stack:[1,2];返回2
3 stack.pop(); // stack:[1];返回2

8、unshift()和shift()

unshift()在三番五次组头部添加一个或者多单元素,返回数组的新长。

shift()删除数组的首先只因素并拿其回到,然后拿剩余的因素前更换。

1 var a = [];
2 a.unshift(1); // [1],返回:1
3 a.unshift(22); // [22,1],返回:2
4 a.shift(); // [1],返回:22
5 a.unshift(3,[4,5]); // [3,[4,5],1],返回:3

横流:当unshift()有多单参数时,这些参数是一次性插入的如休同等坏一个地栽。这表示插入的因素的次第和她当参数列表中之相继一致。

9、toString()和toLocaleString()

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

流动:这里与非应用另外参数的join()方法返回的字符串是一样的。

 

ECMAScript5遭之数组方法

1、fotEach()

fotEach()从头到尾遍历数组,为每个元素调用指定的函数。

1 var data = [1,2,3,4,5];
2 var sum = 0;
3 data.forEach(function(v,i,a){ // v:数组元素,i:元素索引,a:数组本身
4     a[i] = v + 1;
5 });
6 data // [2,3,4,5,6]

2、map()

map()方法将调用的数组的每个元素传递让指定的函数,并返回一个数组,它富含该函数的有所返回值。

1 a = [1,2,3];
2 b = a.map(function(){
3   return x*x;
4 }); // [1,4,9]

map()和forEach()的反差:map()的参数函数必须有返回值;map()返回的是新数组,不改动调用数组。

流动:如果是稀疏数组,返回的啊是千篇一律方式的疏数组:它抱有同样之长,相同之短失元素。

3、filter()

filter()方法返回的数组元素是调动用数组的一个子集。传递的函数是因此来逻辑判定的:该函数返回true或false。

 1 a = [5,4,3,2,1];
 2 sub = a.filter(function(x){
 3     return x < 3;
 4 }); // [2,1]
 5 
 6 
 7 subodd = a.filter(function(x,i){
 8     return i%2==0;
 9 }); // [5,3,1]

流动:filter()会过了系数数组中缺少的元素,它回到的数组总是稠密的。故可以是来压缩稀疏数组的空缺:

1 // 压缩空缺
2 var dense = parse.filter(function{ return true; });
3 
4 // 压缩空缺并删除undefined和null元素
5 a = a.filter(function(x){
6 12     return x !== undefined && x !=null;
7 13 });

4、every()和some()

当下半单法子是多次组的逻辑判定:它们对数组元素以指定的函数进行判断,返回true或false。

 1 a = [1,2,3,4,5];
 2 a.every(function(x){
 3     return x < 10; // true,所有的值都<10
 4 });
 5 a.every(function(x){
 6     return x % 2 == 0; // false:不是所有的值都是偶数
 7 });
 8 
 9 a.some(function(x){
10     return x % 2; // true:存在偶数的数组元素
11 });
12 a.some(isNaN); // false:不存在非数值元素

横流:一旦every()和some()确认欠归什么价它们就会见停下所有历数组元素。

5、reduce()和reduceRight()

即时有限单办法应用指定的函数将数组元素进行整合,生成单个值。

1 var a = [1,2,3,4,5];
2 var sum = a.reduce(function(x,y){
3     return x+y;
4 },0); // 数组求和
5 
6 var max = a.reduce(function(){
7     return (x>y)?x:y;
8 }); // 求最大值

reduce()有一定量只参数,第一独为履行操作的函数,第二单吗可选取参数,为传送让函数的初始值。

6、indexOf()和lastIndexOf()

就点儿单章程寻找整个数组中装有让定值的素,返回找到的率先单要素的目录,若无找到则归-1.

indexOf()从头至尾搜索,lastIndexOf()反向搜索。

a = [0,1,2,1,0];
a.indexOf(1); // 返回 1
a.lastIndexOf(1); // 返回 3
a.indexOf(3); // 返回 -1

第一独参数为需要寻找的价值,第二只参数是可选的,指定数组中之一个目录,从那里开找寻。第二只参数为可以是负数,代表相对于数组末尾的偏移量。