javascript基础系列之Array
数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。因数组的长度是随时可变,所以数组在内存中的存储是不连续的。
常见操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| var fruits = ["apple", "banana", "pear"]; console.log(fruits); console.log(fruits.length);
var first = fruits[0]; var last = fruits[fruits.length-1]; console.log(first, last);
fruits.forEach((item, index, array)=> { console.log(item, index, array); });
console.log(fruits); fruits.push("melons"); console.log(fruits); fruits.pop(); console.log(fruits);
console.log(fruits); fruits.unshift("grape"); console.log(fruits); fruits.shift(); console.log(fruits);
console.log(fruits.indexOf("banana"));
console.log(fruits.splice(fruits.indexOf("banana"), 2)); console.log(fruits);
var fruits1 = fruits.slice(); fruits1.push("watermelon"); console.log(fruits);
console.log(fruits[10]);
fruits.0
var years = [2001, 2002, 2003, 2004, 2005]; console.log(years[2] != years["02"]);
fruits[7] = "persimmon"; console.log(Object.keys(fruits)); console.log(fruits.length);
fruits.length = 10; console.log(fruits);
fruits.length = 2; console.log(fruits);
|
修改原数组的方法
push, splice
静态属性
get Array[@@species]
1 2 3 4 5 6 7 8 9
| console.log(Array[Symbol.species]);
class MyArray extends Array { static get [Symbol.species]() { return Array; } } var myarr = new MyArray(); console.log(MyArray[Symbol.species]);
|
静态方法
Array.from
定义:类数组转成数组
1 2 3 4 5 6 7
| function fn(a, b, c) { console.log(arguments); console.log(Array.from(arguments)); console.log(Array.isArray(arguments)); } fn(1, 2, 3, 4);
|
Array.isArray
定义:判断变量是不是数组对象
1 2
| var obj = [1,2,3]; console.log(Array.isArray(obj));
|
Array.of
定义:根据一组参数来创建新的数组实例,支持任意的参数数量和类型,和Array构造函数类似。Array.of() 和 Array 构造函数之间的区别在于处理整数参数,实例代码如下:
1 2 3 4 5
| Array.of(7); Array(7);
Array.of(1,2,3)和Array(1,2,3)是类似的
|
实例属性
Array.prototype[@@unscopables]
1 2 3 4 5 6 7 8 9 10
|
var keys = []; with(Array.prototype) { keys.push("something"); } console.log(Object.keys(Array.prototype[Symbol.unscopables]));
console.log(keys);
|
Array.prototype.length
数组长度
1 2 3
| var arr = [2,3,4]; console.log(arr.length);
|
正则匹配结果所返回的数组
正则匹配返回的数组如下
1 2 3 4
| const myRe = /d(b+)(d)/i; const myArray = myRe.exec('cdbBdbsbz'); console.log(myArray);
|
属性或元素 |
说明 |
示例 |
input |
正则表达式所匹配的原始字符串 |
cdbBdbsbz |
index |
匹配字串在原始字符串中的索引 |
1 |
[0] |
最后匹配到字串 |
dbBd |
[1], …,[n] |
分组所匹配到的字符串 |
[1]: bB [2]: d |

实例方法
Array.prototype.at
通过索引返回数组中的值
1 2 3 4
| var arr = [5, 6, 7, 8]; console.log(arr.at(1)); console.log(arr.at(-1));
|
Array.prototype.concat
合并两个或多个数组
1 2 3 4 5
| var arr1 = [5, {a: 6}, [1,2], 7]; var arr2 = arr1.concat();
|
Array.prototype.copyWithin
arr.copyWithin(target[, start[, end]])
浅复制数组的一部分到同一个数组的另一个位置,并返回它,不会改变原数组的长度
1 2 3
| var arr1 = [2,3,4,5,6];
|
Array.prototype.entries
1 2 3 4 5 6 7
| var arr3 = [5, 6, 7, 8, 9]; var iterator1 = arr3.entries(); console.log(iterator1.next().value); console.log(iterator1.next().value); console.log(iterator1.next().value); console.log(iterator1.next().value);
|
Array.prototype.every
1 2 3 4 5 6 7
| var arr4 = [5, 6, 7, 8]; var result = arr4.every(function(item, index){
return item <= 8; }); console.log(result);
|
Array.prototype.fill
1 2 3 4
|
var arr5 = [5, 6, 7, 8, 9, 10]; console.log(arr5.fill(1, 2, 4));
|
Array.prototype.filter
1 2 3 4 5 6 7
| var arr6 = [5,6,7,8,9]; var result = arr6.filter(function(item, index){
return item <=7; }); console.log(result);
|
Array.prototype.find
1 2 3 4 5 6
| var arr = [5,6,7,8]; var result = arr.find(function(item, index){ return item % 2 === 0; }); console.log(result);
|
Array.prototype.findIndex
1 2 3 4 5 6
| var arr = [5,6,7,8]; var result = arr.findIndex(function(item, index){ return item % 2 === 0; }); console.log(result);
|
Array.prototype.flat
1 2 3
| var arr = [[2,3,4], [5,6,[7], [8,9]], 10]; console.log(arr.flat(2));
|
Array.prototype.flatMap
1 2 3 4
| var arr = [1,2,3,4]; var result = arr.flatMap(x=>[x, x*2]); console.log(result);
|
Array.prototype.forEach
1 2 3 4 5 6
| var arr = [4,5,6,7,8]; var result1 = arr.forEach(function(item){ console.log(item) }); console.log(result1);
|
Array.prototype.includes
1 2 3
| var arr = [15,16,17,18]; console.log(arr.includes(17));
|
Array.prototype.indexOf
1 2 3
| var arr = [15,16,17,18]; console.log(arr.indexOf(16));
|
Array.prototype.join
1 2 3
| var arr = [5,6,7,8]; console.log(arr.join(","));
|
Array.prototype.keys
1 2 3 4 5 6
| var arr = [5,6,7,8,9]; var iterators = arr.keys(); for (const iterator of iterators) { }
|
Array.prototype.lastIndexOf
1 2 3 4
| var arr = [5,6,7,8,6,9]; console.log(arr.lastIndexOf(6)); console.log(arr.indexOf(6));
|
Array.prototype.map
1 2 3 4 5 6
| var arr = [5,6,7,8]; var result = arr.map(function(item){ return item * 2; }); console.log(result);
|
Array.prototype.pop
1 2 3
| var arr = [5,6,7,8]; console.log(arr.pop());
|
Array.prototype.push
1 2 3
| var arr = [5,6,7,8]; console.log(arr.push(9));
|
Array.prototype.reduce
1 2 3 4 5 6 7 8
| console.log("_______reduce_______") var arr = [1,2,3,4]; var result = arr.reduce(function(result, value){ return result + value; }, 5); console.log(result);
|
Array.prototype.recudeRight
1 2 3 4 5 6 7
| var arr = [1,2,3,4]; var result = arr.reduceRight(function(result, value){ return result + value; }, 5); console.log(result);
|
Array.prototype.reverse
1 2 3
| var arr = [10, 2,13,7,9]; console.log(arr.reverse());
|
Array.prototype.shift
1 2 3 4
| var arr= [1,2,3,4]; console.log(arr.shift()); console.log(arr);
|
Array.prototype.slice
1 2 3 4
|
var arr = [1,2,3,4,5]; console.log(arr.slice(2,3));
|
Array.prototype.some
1 2 3 4 5 6
| var arr = [1,2,3,4,5]; var result = arr.some(function(item){ return item >= 5; }); console.log(result);
|
Array.prototype.sort
1 2 3
| var arr = [5,8,2,4,3]; console.log(arr.sort());
|
Array.prototype.splice
1 2 3 4 5 6 7 8 9 10 11
|
var arr = [1,2,3,4,5]; console.log(arr.splice(2,3)); console.log(arr);
var arr = [1,2,3,4,5]; console.log(arr.splice(2,1,10,11)); console.log(arr);
|
Array.prototype.toLocaleString
1 2 3
| var arr = [1,"b", new Date("2022-03-02")]; console.log(arr.toLocaleString());
|
Array.prototype.toString
1 2 3
| var arr = [1,"b", new Date("2022-03-02")]; console.log(arr.toString());
|
Array.prototype.unshift
1 2 3 4
| var arr = [2,3,4,5]; console.log(arr.unshift(1)); console.log(arr);
|
Array.prototype.values
1 2 3 4 5 6
| var arr = [5,6,7,8]; var iters = arr.values(); for (const iterator of iters) { }
|
Array.prototype[@@iterator]
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var arr = ['a', 'b','c']; var iters2 = arr[Symbol.iterator]();
for (const iterator of iters2) { }
var arr = ['a', 'b', 'c']; var eArr = arr[Symbol.iterator](); console.log(eArr.next().value); console.log(eArr.next().value); console.log(eArr.next().value); console.log(eArr.next().value);
|
参考文档
Array