定义: 数组是一种有序数据结合。
创建方式:
直接量 var a = [1, 2]
构造函数: var b = new Array(1, 2) // 注意: 构造函数中只传一个参数会变成长度。
数组API
var arr = [0, 1, 2]
push 添加元素:返回length,并把参数添加到数组中。
pop 删除元素: 删除最后一位元素,删除的元素可以接受作为变量值。
unshift: 在头部插入元素
shift: 在头部删除第一个元素
concat: 连接数组成为一个新数组,参数可以是其他数组的名称,也可以是数组。
splice 删除并插入元素:
第一个参数为从该下标开始删除
第二个参数为删除多少个
后面的参数为增加的元素(可选)
没看见括号....
slice 截取元素生成新数组
第一个参数: 从该下标开始拷贝,
第二个参数: 到该下标之前的一位结速(不包括)
只传一个参数: 从该下标之后的所有
只传一个参数并且是负数: 到这拷贝到这里
reverse: 倒着排序
sort: 排序。默认0-9, a-z。也可以自己自定义规则。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
第一个参数: 用于比较的第一个参数
第二个参数: 用于比较的第二个参数
- 如果
compareFunction(a, b)
小于 0 ,那么 a 会被排列到 b 之前; - 如果
compareFunction(a, b)
等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本); - 如果
compareFunction(a, b)
大于 0 , b 会被排列到 a 之前。
var arr = ['apple', 'banana', 'pear', 'orange'];
arr.sort(function(a, b) {
if(a.length < b.length) {
return -1;
}else if(a.length > b.length) {
return 1;
}else {
return 0;
}
})
indexOf: 获取第一个索引
第一个参数: 要查找的元素
第二个参数: 从哪里开始查找
lastIndexOf:倒着往前查找
forEach 每个元素定义回调,每个元素都会执行。
第一个参数是值,
第二个参数是索引,
第三个参数是对应的数组(可选)
var arr = ['apple', 'banana', 'pear', 'orange'];
arr.forEach(fn);
function fn(value, index, arr) {
console.log(`value: ${value} - index: ${index} - arr: ${arr}`)
}
every()
方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
注意:若收到一个空数组,此方法在一切情况下都会返回true
。
var arr = [10, 12, 27, 2];
var arr1 = [6, 20, 11, 8];
function greater(ar) {
return ar >= 5;
}
some()
方法测试数组中是不是有元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。如果用一个空数组进行测试,在任何情况下它返回的都是false
。
var arr = [10, 12, 27, 2];
var arr1 = [6, 20, 11, 8];
function greater(ar) {
return ar >= 25;
}
map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
var arr = [10, 12, 27, 2];
function fn(x) {
return x + 1;
}
filter 返回结果为true的数组
var arr = [10, 12, 27, 2, 4, 7, 13];
function fn(x) {
return x < 10;
}
reduce()
方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
函数第一个参数是累积器,
第二个是当前值
var arr = [1, 2, 3, 4];
function fn(a, b) {
return a + b;
}
reduceRight()
反向汇总。
函数第一个参数是累积器,
第二个是当前值
var arr = [1, 2, 3, 4];
function fn(a, b) {
console.log(a, b)
return a + b;
}