数组
1. isArray
用来判断一个值是否为数组,返回结果为true或false
var a = [1, 2, 3];
typeof a // "object"
Array.isArray(a) // true
2. valueOf
valueOf方法返回数组本身。
3. toString
返回数组的字符串形式。
var a = [1, 2, 3];
a.toString() // "1,2,3"
var a = [1, 2, 3, [4, 5, 6]];
a.toString() // "1,2,3,4,5,6"
4. push
在数组的末端添加一个或多个元素,返回添加后的数组的长度。
var a = [];
a.push(1) // 1
a.push('a') // 2
a.push(true, {}) // 4
a // [1, 'a', true, {}]
5. pop
删除数组的最后一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.pop() // 'c'
a // ['a', 'b']
6. join
以参数作为分隔符,将所有数组成员组成一个字符串返回。
var a = [1, 2, 3, 4];
a.join() // "1,2,3,4"
a.join('') // '1234'
a.join("|") // "1|2|3|4"
7. concat
用于多个数组的合并,添加到原数组的尾部,然后返回一个新数组。
['hello'].concat(['world'], ['!'])
// ["hello", "world", "!"]
[1, 2, 3].concat(4, 5, 6)
// [1, 2, 3, 4, 5, 6]
或
var arr = [1,2,3];
var arr1 = [4,5,6];
var newArr = [...arr,...arr1];(ES6中的spread解构)
8. shift
删除数组的第一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.shift() // 'a'
a // ['b', 'c']
可以遍历并清空一个数组。
var list = [1,2,3,4,5,6,7,8,9,10];
var item;
while (item = list.shift()) {
console.log(item);
}
list // []
清空数组还可以使用
list.length = 0
9. unshift
删除数组的第一个元素,并返回该元素。
var a = ['a', 'b', 'c'];
a.shift() // 'a'
a // ['b', 'c']
10. reverse
颠倒数组中元素的顺序,返回改变后的原数组。
var a = ['a', 'b', 'c'];
a.reverse() // ["c", "b", "a"] a // ["c", "b", "a"]
11. slice
提取原数组的一部分,返回一个新数组,原数组不变。 它的第一个参数为起始位置(数组索引),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个元素。
var a = ['a', 'b', 'c'];
a.slice(1,2) // ["b"]
a.slice(1) // ["b", "c"]
a.slice(0) // ["a","b","c"]
a.slice(-2) // ["b", "c"]
a.slice(4) // []
a.slice(2, 6) // ["c"]
a.slice(2, 1) // []
12. splice
删除原数组的一部分元素,并可以在被删除的位置添加入新的元素。它的返回值是被删除的元素。该方法会改变原数组。
// 格式
arr.splice(start_index, count_to_remove, addElement1, addElement2, ...);
// 用法
var a = ["a","b","c","d","e","f"];
a.splice(4,2)
// ["e", "f"]
a
// ["a", "b", "c", "d"]
13. indexOf 和 lastIndexOf
返回某个指定的子字符串在原字符串中首次出现的位置(也可以对数组使用)。indexOf是从头开始匹配,lastIndexOf是从末尾匹配(即最后一次出现的位置)。返回值为-1时,代表原字符串中没有该指定的子字符串。
"hello world".indexOf("o") // 4
"hello world".lastIndexOf("o")// 7
ES5新加入的数组方法
1. map
对数组的所有元素依次调用一个函数,根据函数结果返回一个新数组。(元素组不改变)
var numbers = [1, 2, 3];
numbers.map(function(n) { return n+1 });
// [2, 3, 4]
numbers
// [1, 2, 3]
2. forEach
与map方法很相似,也是遍历数组的所有元素,执行某种操作,但没有返回值
var arr = [1, 2, 3, 4, 5, 6, 7];
arr.forEach(function(ele) {
console.log(ele);
})
3. filter
依次对所有数组成员调用一个测试函数,返回结果为true的元素组成一个新数组返回。
var arr = [1, 2, 3, 4, 5, 6, 7];
console.log(arr.filter(function(elem) {
return elem % 2 === 0;
})) //[2,4,6]