检测数组
Array.isArray([]) // true
Array.isArray({}) // false
Array.isArray('') // false
常用方法
// 以下方法均改变原始数组
push() 方法可以接收任意数量的参数,并将它们逐个添加到数组末尾
pop() 方法从数组末尾移除最后一项
unshift() 方法可以在数组前端添加任意数量的参数
shift() 方法能够移除数组中的第一项
reverse() 方法会反转数组的顺序
sort() 方法在默认情况下按升序排列数组项
splice() 方法可对数组进行 删除 插入 替换
// 以下方法不影响原始数组
slice() 方法能够基于当前数组中的一或多个项创建一个新的数组
join() 方法将数组中所有元素转换成字符串并连接在一起
indexOf() 方法在整个数组中搜索指定的元素
concat() 方法可以基于当前数组中的所有项创建一个新的数组
迭代方法
every() 如果该函数对每一项都返回true,则返回true
filter() 该函数返回true的项组成的数组
forEach() 这个方法没有返回值
map() 返回每次函数调用的结果组成的数组
some() 如果改函数的任一项返回true,则返回true
归并方法
reduce() reduceRight() 主要取决于从哪头开始遍历,除此之外,他们完全相同。
1. 数组排序
// 升序
function compare(val1, val2) {
if(val1 < val2) {
return -1
}else if(val1 > val2) {
return 1
}else {
return 0
}
}
var values = [1, 3, 2, 6, 5]
values.sort(compare)
console.log(values) // 1, 2, 3, 5, 6
// 降序
function compare(val1, val2) {
if(val1 < val2) {
return 1
}else if(val1 > val2) {
return -1
}else {
return 0
}
}
var values = [1, 3, 2, 6, 5]
values.sort(compare)
console.log(values) // 6, 5, 3, 2, 1
// 升序
function compare(val1, val2) {
return val1 - val2
}
// 降序
function compare(val1, val2) {
return val2 - val1
}
2. 数组去重
var values = [...new Set([6, 5, 3, 5, 7, '8', 8, 6])]
console.log(values) // [6, 5, 3, 7, '8', 8]
3. 获取数组最大值
var values = [3, 1, 5, 8, 6]
var maxVal = Math.max(...values)
console.log(maxVal) // 8
4. 让一个数组乱序
var values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
values.sort(function() {
return Math.random() - 0.5
})
console.log(values)
5. 拷贝数组
// 方法一
var values = [1, 2, 3, 4, 5]
var copyValues = values.slice(0)
// 方法二
var values = [1, 2, 3, 4, 5]
var copyValues = values.concat()
拓展:如何用一句代码计算出淘宝首页一共使用了多少种HTML标签?
代码:
new Set([...document.querySelectorAll('*')].map(v=>v.nodeName)).size
示例: