数组的常用方法
创建和初始化数组
使用 Array 构造函数初始化
1 | let array1 = new Array(); |
直接赋值创建
1 | let array1 = []; |
Array.of 方法
Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。1
2let array1 = Array.of(7); // [7]
let array2 = Array.of(...[1, 2, 3, 4]); // [1, 2, 3, 4]
二维和多维数组
二维数组
1 | let matrixArray = new Array(2); |
- | [0] | [1] | [2] | [3] |
---|---|---|---|---|
[0] | ‘0.0’ | ‘0.1’ | ‘0.2’ | ‘0.3’ |
[1] | ‘1.0’ | ‘1.1’ | ‘1.2’ | ‘1.3’ |
搜索元素
使用 indexOf 方法
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。1
2
3let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10];
console.log(array.indexOf(10)) // 9
console.log(array.indexOf('A')) // -1
使用 lastIndexOf 方法
lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或变量)在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。1
2
3
4
5let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10];
console.log(array.lastIndexOf(10)) // 10
console.log(array.indexOf('A')) // -1
console.log(array.lastIndexOf(10, 9)) // 9
使用 find 方法
find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。1
2
3
4
5
6
7
8
9let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10];
let find1 = array.find((value, index, arr) => {
return value % 2 === 0;
}) // 2
let find2 = array.find((value, index, arr) => {
return typeof value === 'string';
}) // undefined
使用 findIndex 方法
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。1
2
3
4
5
6
7
8
9let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10];
let find1 = array.findIndex((value, index, arr) => {
return value % 2 === 0;
}) // 1
let find2 = array.findIndex((value, index, arr) => {
return typeof value === 'string';
}) // -1
使用 includes 方法
includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。1
2
3let array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10];
console.log(array.includes(10)) // true
console.log(array.includes('A')) // false
添加元素
使用 push 方法
push 方法,能把任意元素添加到数组的末尾。1
2let array = [1, 2, 3];
array.push('number'); //[1, 2, 3, 'number']
使用 unshfit 方法
unshfit 方法,能把任意元素添加至数组的开头。
1 | let array = [1, 2, 3]; |
删除元素
使用 pop 方法
pop 方法,能在数组的末尾删除一个元素。1
2let array = [1, 2, 3, 'number'];
array.pop(); // [1, 2, 3]
使用 shfit 方法
shfit方法,能在数组的开头删除一个元素。1
2let array = [ 'number', 1, 2, 3];
array.shfit(); // [1, 2, 3]
在任意位置删除、添加、替换元素
使用 splice 删除元素
1 | let array = [1, 2, 3, 4, 5]; |
使用 splice 添加元素
1 | let array = [1, 2, 3]; |
使用 splice 替换元素
1 | let array = [1, 2, 3]; |
使用 fill 替换元素
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。1
2
3let array = [1, 2, 3];
let number = 0;
array.fill(number, 1, 3); // [1, 0, 0]
数组合并
使用 concat 连接数组
concat 函数并不会直接改变数组的值,而是返回一个连接后的数组1
2
3let array1 = [1, 2, 3];
let array2 = ['a', 'b', 'c'];
let result = array1.concat(array2); // [1, 2, 3, 'a', 'b', 'c']
排序元素
使用 sort 方法排序
1 | let array = [5, 3, 2, 1, 4]; |
使用 sort 方法自定义排序
1 | let array = ['D', 'a', 'c', 'B']; |
使用 reverse 方法将数组中元素的位置颠倒
1 | let array = [1, 2, 3, 4, 5]; |
迭代器函数
forEach 方法
forEach( ) 方法对数组的每个元素执行一次提供的函数。1
2
3
4
5
6
7
8let array = [1, 2, 3, 4];
array.forEach((value, index, arr) => {
console.log(value % 2 === 0); // 输入出是否被 2 整除
})
// false
// true
// false
// true
for …… of 循环迭代
1 | let array = [1, 2, 3, 4]; |
map 方法
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。1
2
3
4
5
6let array = [1, 2, 3, 4];
let result = array.forEach((value, index, arr) => {
return value * 2;
})
// array : [1, 2, 3, 4]
// result : [2, 4, 6, 8]
filter 方法
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。1
2
3
4
5
6let array = [1, 2, 3, 4];
let result = array.filter((value, index, arr) => {
return value > 2;
})
// array : [1, 2, 3, 4]
// result : [3, 4]
reduce 方法
reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。1
2
3
4
5let array = [1, 2, 3, 4];
let result = array.reduce((value, currentValue, index, arr) => {
return value + currentValue;
}, 5)
// result : 5 + 1 + 2 + 3 + 4 = 15
every 方法
every( )方法测试数组的所有元素是否都通过了指定函数的测试。1
2
3
4
5
6
7
8
9
10
11let array = [1, 2, 3, 4];
array.every((value) => {
return value % 2 === 0; // 数组是否都能被 2 整除
})
// false
array.every((value) => {
return typeof value == 'number'; // 数组是否都是数字
})
// true
some 方法
some() 方法测试是否至少有一个元素通过由提供的函数实现的测试。1
2
3
4
5
6
7
8
9
10
11let array = [1, 2, 3, 4];
array.some((value) => {
return value % 2 === 0; // 数组有没有能被 2 整除的值
})
// true
array.some((value) => {
return typeof value == 'string'; // 数组有没有字符串
})
// false
entries 方法
entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。1
2
3
4
5
6
7
8let array = [1, 2, 3, 4];
let iterator = array.entries();
console.log(iterator.next()); // {value: [0, 1], done: false }
console.log(iterator.next()); // {value: [1, 2], done: false }
console.log(iterator.next()); // {value: [2, 3], done: false }
console.log(iterator.next()); // {value: [3, 4], done: false }
console.log(iterator.next()); // {value: undefined, done: true }
keys 方法
keys() 方法返回一个包含数组中每个索引键的Array Iterator对象。1
2
3
4
5
6
7
8let array = [1, 2, 3, 4];
let iterator = array.keys();
console.log(iterator.next()); // {value: 0, done: false }
console.log(iterator.next()); // {value: 1, done: false }
console.log(iterator.next()); // {value: 2, done: false }
console.log(iterator.next()); // {value: 3, done: false }
console.log(iterator.next()); // {value: undefined, done: true }
values 方法
values() 方法返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值1
2
3
4
5
6
7
8let array = [1, 2, 3, 4];
let iterator = array.values();
console.log(iterator.next()); // {value: 1, done: false }
console.log(iterator.next()); // {value: 2, done: false }
console.log(iterator.next()); // {value: 3, done: false }
console.log(iterator.next()); // {value: 4, done: false }
console.log(iterator.next()); // {value: undefined, done: true }
Array.from 方法
Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。1
2console.log(Array.from('number')); // ['n', 'u', 'm', 'b', 'e', 'r']
console.log(Array.from([1, 2, 3], value => value + 1)); // [2, 3, 4]
输出数组为字符串
toString 方法
1 | let array = ['h', 'e', 'l', 'l', 'o']; |
join 方法
1 | let array = ['h', 'e', 'l', 'l', 'o']; |