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
推荐阅读
- 三分钟学习一下JavaScript中map对象的用法
- WEB前端高级教程|web前端高级JavaScript - 关于变量提升this指向闭包作用域的一些练习题
- 前端|js vue base64 byte 转 为文件格式 (以excel为例)
- 三分钟学习一下JavaScript中set对象的用法
- vue|Vue.js响应式原理(三)——发布订阅模式和观察者模式
- vue|快速理解Vue 使用 vm.$set 解决对象新增属性不能响应的问题
- 每周知识总结|每周知识总结(五)
- 两个数组拿相同元素,数组去重,两个日期区间段合并
- javascript|基于jquery扩展漂亮的单选按钮——RadioButton