Array常用方法
a、添加元素到第一个:unshift()
b、添加元素到最后一个:push()
c、删除第一个元素:shift()
d、删除最后一个元素:pop()
e、删除指定元素:splice()
举例:var aa = [11, ‘aa’, 518, ‘cc’]; aa.splice(1, 1); //删除第二个元素
f、添加元素到指定位置
举例:
var aa = [‘aa’, ‘cc’, 55]; aa.splice(1, 0, ‘dd’, ‘ee’); //将元素’dd’, ‘ee’ 添加到索引1位置
g、遍历元素:map(), forEach();
h、数组元素连接成字符串:join(), 数组之间的合并:concat()
i、查找元素索引:indexOf(), lastIndexOf()
j、部分元素提取:slice()
k、元素反转: reverse()
l、元素排序: sort()
m、元素遍历累计:reduce() , rightReduce()
n、数组元素过滤: filter()
Array.isArray方法用来判断一个值是否为数组。它可以弥补typeof运算符的不足。
View Code
Array的实例方法:
1、valueOf(),toString()
valueOf() : 返回数组本身;
toString() : 返回数组的字符串形式
View Code
2、push()
用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。该方法会改变原数组。
View Code
合并两个数组:
View Code
3 、pop()
用于删除数组的最后一个元素,并返回该元素。该方法会改变原数组
View Code
4、join()
方法以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔
var a = [1, 'aaa', 33, 88, {"name":"大锤"}];
console.log(a.join()); //1,aaa,33,88,[object Object]
console.log(a.join(' | ')); // 1 | aaa | 33 | 88 | [object Object]
console.log(a.join('^_^')); // 1^_^aaa^_^33^_^88^_^[object Object]
5、concat()
用于多个数组的合并。它将新数组的成员,添加到原数组的尾部,然后返回一个新数组,原数组不变。
View Code
6 shift()
用于删除数组的第一个元素,并返回该元素。该方法会改变原数组
View Code
push和shift结合使用,就构成了“先进先出”的队列结构(queue)。
7 unshift()
用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。该方法会改变原数组
View Code
8 reverse()
用于颠倒数组中元素的顺序,返回改变后的数组。该方法将改变原数组。
View Code
9 slice()
方法用于提取原数组的一部分,返回一个新数组,原数组不变。
View Code
slice方法的一个重要应用,是将类似数组的对象转为真正的数组:
View Code
10 splice()
用于删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。该方法会改变原数组。
splice的第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素
View Code
11 sort()
对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变
View Code
sort方法不是按照大小排序,而是按照对应字符串的字典顺序排序;
可以自定义排序方式:
View Code
12 map()
对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组。
View Code
map方法不仅可以用于数组,还可以用于字符串,用来遍历字符串的每个字符。但是,不能直接使用,而要通过函数的call方法间接使用,或者先将字符串转为数组,然后使用。
View Code
13 forEach()
forEach方法与map方法很相似,也是遍历数组的所有成员,执行某种操作,但是forEach方法一般不返回值,只用来操作数据。如果需要有返回值,一般使用map方法。
forEach方法的参数与map方法一致,也是一个函数,数组的所有成员会依次执行该函数。它接受三个参数,分别是当前位置的值、当前位置的编号和整个数组。
View Code
forEach方法也可以接受第二个参数,用来绑定回调函数的this关键字;
这个参数对于多层this非常有用,因为多层this通常指向是不一致的。
View Code
View Code
关于数组的for循环和forEach 对于关键字continue、break、return的支持
for循环里支持continue、break、return关键字,continue进入下一个循环;break跳出循环;return直接返回不再往下执行代码;
forEach不支持continue和break(使用会运行报错), 支持return关键字;碰到return表示跳出当前循环,执行下一个循环; map同forEach
View Code
14 filter()
filter方法的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。
View Code
15 some(),every()
这两个方法类似“断言”(assert),用来判断数组成员是否符合某种条件。
它们接受一个函数作为参数,所有数组成员依次执行该函数,返回一个布尔值。该函数接受三个参数,依次是当前位置的成员、当前位置的序号和整个数组。
some方法是只要有一个数组成员的返回值是true,则整个some方法的返回值就是true,否则false。
View Code
16 reduce(),reduceRight()
reduce方法和reduceRight方法依次处理数组的每个成员,最终累计为一个值。
它们的差别是,reduce是从左到右处理(从第一个成员到最后一个成员),reduceRight则是从右到左(从最后一个成员到第一个成员),其他完全一样。
这两个方法的第一个参数都是一个函数。该函数接受以下四个参数。
1) 累积变量,默认为数组的第一个成员
2)当前变量,默认为数组的第二个成员
3)当前位置(从0开始)
4)原数组
这四个参数之中,只有前两个是必须的,后两个则是可选的。
View Code
利用reduce方法,可以写一个数组求和的sum方法。
View Code
如果要对累积变量指定初值,可以把它放在reduce方法和reduceRight方法的第二个参数。
View Code
17 indexOf(),lastIndexOf()
indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1;
lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1;
View Code
18 数组的链式使用
上面这些数组方法之中,有不少返回的还是数组,所以可以链式使用。
View Code