1.定义
数组是按次序排列的一组值。数组属于一种特殊的对象,键名为0,1,2,3...
length属性返回数组的成员数量。
2.创建和初始化
let daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday'];
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
3.一些方法
(1)添加元素
push()方法可向数组末尾添加一个或多个元素,并返回新的长度。
numbers.push(11);
unshift()方法可向数组开头添加一个或多个元素,并返回新的长度。
numbers.unshift(-2);
(2)删除元素
pop()方法可以删除并返回数组的最后一个元素。
numbers.pop();
shift()方法可以删除并返回数组的第一个元素。
numbers.shift();
(3)在任意位置添加或删除元素
splice(index,howmany,item1,...itemX)方法可从数组指定位置添加/删除元素,返回被删除的元素的数组
numbers.splice(5,3);
numbers.splice(5, 0, 2, 3, 4);
(4)其它数组方法
合并数组
concat 连接2个或更多数组,并返回结果(可以)
let numbers = negativeNumbers.concat(zero, positiveNumbers);
迭代器函数(迭代数组中的元素)
every 对数组中的每个元素运行给定函数,如果该函数对每个元素都返回true,则返回true
numbers.every(isEven);
some 对数组的每个元素运行给定函数,如果任一元素返回true,则返回true
numbers.some(isEven);
forEach 对数组中的每个元素运行给定函数,没有返回值
numbers.forEach(x => console.log(x % 2 === 0));
map 对数组中的每个元素运行给定函数,返回每次函数调用的结果组成的数组
const myMap = numbers.map(isEven);
filter 对数组中的每个元素运行给定函数,返回该函数会返回true的元素组成的数组
const evenNumbers = numbers.filter(isEven);
reduce 接收一个函数作为累加器,数组元素从左到右执行函数,最终计算为一个值并返回
let sum = numbers.reduce((previous, current,index,array) => previous + current);
indexOf 返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
console.log(numbers.indexOf(10));
lastIndexOf 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值
console.log(numbers.lastIndexOf(10));
reverse 颠倒数组中元素的顺序
numbers.reverse();
sort 按照字母顺序对数组排序,可以传入指定排序方法的函数作为参数
numbers.sort();
numbers.sort((a, b) => a - b);
toString 将数组作为字符串返回
console.log(numbers.toString());
join 将所有的数组元素连接成一个字符串
const numbersString = numbers.join('-');
slice 传入索引值,将数组里对应索引范围内的元素作为新数组返回
valueOf 和toString类似,将数组作为字符串返回
(5)新增数组方法
for...of循环迭代数组
for (const n of numbers) {
console.log(n % 2 === 0 ? 'even' : 'odd');
}
@@iterator 返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对
let iterator = numbers[Symbol.iterator]();
console.log(iterator.next().value);
copyWithin 复制数组总一系列元素到同一数组指定的起始位置
numbers.copyWithin(0, 3);
numbers.copyWithin(1, 3, 5);
includes 如果数组中存在某个元素则返回true,否则返回false
console.log(numbers.includes(20));
console.log(numbers.includes(5,9));
find 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素
console.log(numbers.find(multipleOf13));
findIndex 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素在数组中的索引
console.log(numbers.findIndex(multipleOf13));
fill 用静态值填充数组
numbersCopy.fill(0);
entries 返回包含数组所有键值对的@@iterator
keys 返回包含数组所有索引的@@iterator
values 返回包含数组中所有值的@@iterator
let aEntries = numbers.entries();
for (const n of aEntries) {
console.log(n);
}
const aKeys = numbers.keys();
console.log(aKeys.next());
const aValues = numbers.values();
console.log(aValues.next());
from 根据已有数组创建一个新数组
let numbers2 = Array.from(numbers);
let evens = Array.from(numbers, x => x % 2 == 0);
of 根据传入的参数创建一个新数组,和[]一样