JS学习笔记

Array 对象 静态方法 Array.isArray() typeof运算符只能显示数组的类型是Object,而Array.isArray方法可以识别数组。
Array.isArray方法返回一个布尔值,表示参数是否为数组。它可以弥补typeof运算符的不足。

var arr = [1, 2, 3]; typeof arr // "object" Array.isArray(arr) // true

push(),pop()
push方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
var arr = []; arr.push(1) // 1 arr.push('a') // 2 arr.push(true, {}) // 4 arr // [1, 'a', true, {}]

pop方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。
var arr = ['a', 'b', 'c']; arr.pop() // 'c' arr // ['a', 'b']

shift(),unshift()
shift()方法用于删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。
var a = ['a', 'b', 'c']; a.shift() // 'a' a // ['b', 'c']

unshift()方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。
var a = ['a', 'b', 'c']; a.unshift('x'); // 4 a // ['x', 'a', 'b', 'c']

join()
join()方法以指定参数作为分隔符,将所有数组成员连接为一个字符串返回。如果不提供参数,默认用逗号分隔。
var a = [1, 2, 3, 4]; a.join(' ') // '1 2 3 4' a.join(' | ') // "1 | 2 | 3 | 4" a.join() // "1,2,3,4"

通过call方法,这个方法也可以用于字符串或类似数组的对象。
Array.prototype.join.call('hello', '-') // "h-e-l-l-o"var obj = { 0: 'a', 1: 'b', length: 2 }; Array.prototype.join.call(obj, '-') // 'a-b'

concat()
concat方法用于多个数组的合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。
['hello'].concat(['world']) // ["hello", "world"]['hello'].concat(['world'], ['!']) // ["hello", "world", "!"][].concat({a: 1}, {b: 2}) // [{ a: 1 }, { b: 2 }][2].concat({a: 1}) // [2, {a: 1}]

reverse()
reverse方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。
var a = ['a', 'b', 'c']; a.reverse() // ["c", "b", "a"] a // ["c", "b", "a"]

slice()
slice()方法用于提取目标数组的一部分,返回一个新数组,原数组不变。
arr.slice(start, end); var a = ['a', 'b', 'c']; a.slice(0) // ["a", "b", "c"] a.slice(1) // ["b", "c"] a.slice(1, 2) // ["b"] a.slice(2, 6) // ["c"] a.slice() // ["a", "b", "c"]

splice()
splice()方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员
arr.splice(start, count, addElement1, addElement2, ...);

var a = ['a', 'b', 'c', 'd', 'e', 'f']; a.splice(4, 2) // ["e", "f"] a // ["a", "b", "c", "d"]

var a = ['a', 'b', 'c', 'd', 'e', 'f']; a.splice(4, 2, 1, 2) // ["e", "f"] a // ["a", "b", "c", "d", 1, 2]

sort()
sort方法对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变。
['d', 'c', 'b', 'a'].sort() // ['a', 'b', 'c', 'd'][4, 3, 2, 1].sort() // [1, 2, 3, 4][11, 101].sort() // [101, 11][10111, 1101, 111].sort() // [10111, 1101, 111]

map()
map()方法将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。
var numbers = [1, 2, 3]; numbers.map(function (n) { return n + 1; }); // [2, 3, 4]numbers // [1, 2, 3]

forEach()
forEach()方法与map()方法很相似, forEach()方法不返回值,只用来操作数据。
function log(element, index, array) { console.log('[' + index + '] = ' + element); }[2, 5, 9].forEach(log); // [0] = 2 // [1] = 5 // [2] = 9

filter()
filter()方法用于过滤数组成员,满足条件的成员组成一个新数组返回。
[1, 2, 3, 4, 5].filter(function (elem) { return (elem > 3); }) // [4, 5]

var arr = [0, 1, 'a', false]; arr.filter(Boolean) // [1, "a"]

filter()方法返回数组arr里面所有布尔值为true的成员。
some(),every()
some方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false
var arr = [1, 2, 3, 4, 5]; arr.some(function (elem, index, arr) { return elem >= 3; }); // true

every方法是所有成员的返回值都是true,整个every方法才返回true,否则返回false
var arr = [1, 2, 3, 4, 5]; arr.every(function (elem, index, arr) { return elem >= 3; }); // false

reduce(),reduceRight()
reduce()方法和reduceRight()方法依次处理数组的每个成员,最终累计为一个值。它们的差别是,reduce()是从左到右处理(从第一个成员到最后一个成员),reduceRight()则是从右到左(从最后一个成员到第一个成员),其他完全一样。
[1, 2, 3, 4, 5].reduce(function (a, b) { console.log(a, b); return a + b; }) // 1 2 // 3 3 // 6 4 // 10 5 //最后结果:15

indexOf(),lastIndexOf()
【JS学习笔记】indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1
var a = ['a', 'b', 'c']; a.indexOf('b') // 1 a.indexOf('y') // -1

    推荐阅读