创建:
1、Array 构造函数
var arr1 = new Array();
var arr3 = new Array(“lily”,“lucy”,“Tom”)
2、数组字面量
var arr4 = [];
var arr6 = [“lily”,“lucy”,“Tom”];
数组的访问:数组名[角标] 二维数组:数组名[角标][角标]
数组的更改 :数组名[角标]=新值
数组的属性:length 直接返回数组的长度
3、isArray() 这个方法用来判断一个对象是不是数组,是的话返回true,否则返回false
var arr=[1,2,5,8,7]
Array.isArray(arr)//true
4、split() 方法用于把一个字符串分割成字符串数组。
方法:
方法 | 用例 |
join() | 不传默认用逗号分隔 |
var arr = [1,2,3]; console.log(arr.join("-")); // 1-2-3 | |
function repeatString(str, n) { return new Array(n + 1).join(str); } console.log(repeatString("abc", 3)); // abcabcabc | |
push()和pop() | push()返回修改后数组的长度 pop()返回移除的项 |
var arr = ["Lily","lucy","Tom"]; var count = arr.push("Jack","Sean"); console.log(count); // 5 console.log(arr); // ["Lily", "lucy", "Tom", "Jack", "Sean"] var item = arr.pop(); console.log(item); // Sean console.log(arr); // ["Lily", "lucy", "Tom", "Jack"] | |
shift()和unshift() | shift()返回删除元素的值;如果数组为空则返回undefined unshift()返回数组的长度 |
var arr = ["Lily","lucy","Tom"]; var count = arr.unshift("Jack","Sean"); console.log(count); // 5 console.log(arr); //["Jack", "Sean", "Lily", "lucy", "Tom"] var item = arr.shift(); console.log(item); // Jack console.log(arr); // ["Sean", "Lily", "lucy", "Tom"] | |
sort() | sort()调用每个数组项的 toString()转型方法,然后比较得到的字符串 |
var arr1 = ["a", "d", "c", "b"]; console.log(arr1.sort()); // ["a", "b", "c", "d"] console.log(arr1); // ["a", "b", "c", "d"](原数组改变) | |
function sortNumber(a,b){return a - b}; arr2 = [13, 24, 51, 3]; console.log(arr2.sort(sortNumber)); // [3, 13, 24, 51] | |
reverse() | var arr = [13, 24, 51, 3]; console.log(arr.reverse()); //[3, 51, 24, 13] console.log(arr); //[3, 51, 24, 13](原数组改变) |
concat() | concat()没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。 |
var arr = [1,3,5,7]; var arrCopy = arr.concat(9,[11,13]); console.log(arrCopy); //[1, 3, 5, 7, 9, 11, 13] console.log(arr); // [1, 3, 5, 7](原数组未被修改) var arrCopy2 = arr.concat([9,[11,13]]); console.log(arrCopy2); //[1, 3, 5, 7, 9, Array[2]] console.log(arrCopy2[5]); //[11, 13] | |
slice() | slice()当出现负数时,将负数加上数组长度的值(6)来替换该位置的数 |
var arr = [1,3,5,7,9,11]; var arrCopy = arr.slice(1); var arrCopy2 = arr.slice(1,4);//[1,4) var arrCopy3 = arr.slice(1,-2); var arrCopy4 = arr.slice(-4,-1); console.log(arr); //[1, 3, 5, 7, 9, 11](原数组没变) console.log(arrCopy); //[3, 5, 7, 9, 11] console.log(arrCopy2); //[3, 5, 7] console.log(arrCopy3); //[3, 5, 7] console.log(arrCopy4); //[5, 7, 9] | |
splice() | splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。(该方法会改变原始数组) arr.splice(index , howmany , item1,.....,itemX) index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置 howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, ..., itemX:可选。向数组添加的新项目。 返回值:含有被删除的元素的数组,若没有删除元素则返回一个空数组。 |
var arr = [1,3,5,7,9,11]; var arrRemoved = arr.splice(0,2); console.log(arr); //[5, 7, 9, 11] console.log(arrRemoved); //[1, 3] var arrRemoved2 = arr.splice(2,0,4,6); console.log(arr); // [5, 7, 4, 6, 9, 11] console.log(arrRemoved2); // [] var arrRemoved3 = arr.splice(1,1,2,4); console.log(arr); // [5, 2, 4, 4, 6, 9, 11] console.log(arrRemoved3); //[7] | |
indexOf()和 lastIndexOf() | indexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。 lastIndexOf:接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。 这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1。在比较第一个参数与数组中的每一项时,会使用全等操作符 array.indexOf(item,start) start:可选的整数参数。规定在数组中开始检索的位置。如省略该参数,则将从array[0]开始检索。 |
var arr = [1,3,5,7,7,5,3,1]; console.log(arr.indexOf(5)); //2 console.log(arr.lastIndexOf(5)); //5 console.log(arr.indexOf(5,2)); //2 console.log(arr.lastIndexOf(5,4)); //2 console.log(arr.indexOf("5")); //-1 | |
forEach() | 没有返回值 参数分别为:遍历的数组内容;第对应的数组索引,数组本身。 |
var arr = [1, 2, 3, 4, 5]; arr.forEach(function(x, index, a){ console.log(x + '|' + index + '|' + (a === arr)); }); // 输出为: // 1|0|true // 2|1|true // 3|2|true // 4|3|true // 5|4|true | |
map() | 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。 |
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.map(function(item){ return item*item; }); console.log(arr2); //[1, 4, 9, 16, 25] | |
filter() | 返回一个新数组, 包含通过所提供函数实现的测试的所有元素。 |
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; var arr2 = arr.filter(function(x, index) { return index % 3 === 0 || x >= 8; }); console.log(arr2); //[1, 4, 7, 8, 9, 10] | |
every() | 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。 |
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.every(function(x) { return x < 10; }); console.log(arr2); //true var arr3 = arr.every(function(x) { return x < 3; }); console.log(arr3); // false | |
some() | 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。 |
var arr = [1, 2, 3, 4, 5]; var arr2 = arr.some(function(x) { return x < 3; }); console.log(arr2); //true var arr3 = arr.some(function(x) { return x < 1; }); console.log(arr3); // false | |
reduce()和 reduceRight() | 参数:前一个值、当前值、项的索引和数组对象。 不给函数传递迭代初始值时初始值为数组第一项,函数从数组第二项开始迭代;若我们给函数传递迭代初始值,则函数从数组第一项开始迭代。 reduceRight()语法:arr.reduceRight(function(total , cur , index , arr){//do something}, initialValue) total :必需。初始值, 或者计算结束后的返回值。 cur :必需。当前元素。 index :可选。当前元素的索引。 arr:可选。当前元素所属的数组对象。 initialValue:可选。传递给函数的初始值。 |
var values = [1,2,3,4,5]; var sum = values.reduceRight(function(prev, cur, index, array){ return prev + cur; },10); console.log(sum); //25 | |
Array.from() | 用于类似数组的对象(即有length属性的对象)和可遍历对象转为真正的数组 |
let json ={ '0':'卢', '1':'本', '2':'伟', length:3 } let arr = Array.from(json); console.log(arr); // ["卢", "本", "伟"] | |
Array.of() | 将一组值转变为数组,参数不分类型,只分数量,数量为0返回空数组 |
let arr1 = Array.of(1,2,3); let arr2 = Array.of([1,2,3]); let arr3 = Array.of(undefined); let arr4 = Array.of(); console.log(arr1); // [1, 2, 3] console.log(arr2); // [[1, 2, 3]] console.log(arr3); // [undefined] console.log(arr4); // [] | |
find() | 方法返回通过测试(函数内判断)的数组的第一个元素的值。方法为数组中的每个元素都调用一次函数执行。当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。如果没有符合条件的元素返回 undefined。 回调函数可以接收3个参数,依次为当前的值(currentValue)、当前的位置(index)、原数组(arr) 注意:find() 对于空数组,函数是不会执行的。find() 并没有改变数组的原始值。 |
let Arr = [1,2,5,7,5,9]; let result1 = Arr.find(function(currentValue,index,arr){ return currentValue>5; }); let result2 = Arr.find(function(currentValue,index,arr){ return currentValue>9; }); console.log(result1); // 7 console.log(result2); // undefined | |
let Arr = [ { id:1, name:"张三" }, { id:2, name:"李四" } ]; let obj = Arr.find(function(currentValue,index,arr){ return currentValue.id===1; }); console.log(obj.name); // 张三 | |
findIndex () | 默认返回的是索引,如果没有符合条件的元素返回 -1 |
let Arr = [1,2,5,7,5,9]; let result1 = Arr.findIndex(function(currentValue,index,arr){ return currentValue>5; }); let result2 = Arr.findIndex(function(currentValue,index,arr){ return currentValue>9; }); console.log(result1); // 3 console.log(result2); // -1 | |
fill() | fill()方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。 array.fill(value, start, end) value:必需。填充的值。 start:可选。开始填充位置。如果这个参数是负数,那么它规定的是从数组尾部开始算起。 end:可选。停止填充位置 (默认为 array.length)。如果这个参数是负数,那么它规定的是从数组尾部开始算起。 |
let arr = [1,2,3,4,5,6]; arr.fill(0); // [0, 0, 0, 0, 0, 0] arr.fill(0,1); // [1, 0, 0, 0, 0, 0] arr.fill(0,1,2); // [1, 0, 3, 4, 5, 6] arr.fill(0,-1); // [1, 2, 3, 4, 5, 0] arr.fill(0,1,-1); // [1, 0, 0, 0, 0, 6] | |
for...of | keys()是对键名的遍历 |
let arr = ["a","b","c","d"]; for(let i of arr.keys()){ console.log(i); } //打印: // 0 // 1 // 2 // 3 | |
values()对键值的遍历 | |
<script> let arr = ["a","b","c","d"]; for(let i of arr.values()){ console.log(i); } //打印: // a // b // c // d </script> | |
entries()是对键值对的遍历 | |
<script> let arr = ["a","b","c","d"]; for(let i of arr.entries()){ console.log(i); } //打印: // [0, "a"] // [1, "b"] // [2, "c"] // [3, "d"] for(let [idx,item] of arr.entries()){ console.log(idx+":"+item); } //打印: // 0:a // 1:b // 2:c // 3:d </script> | |
includes() | 判断一个数组是否包含一个指定的值,如果是返回 true,否则false。 arr.includes(searchElement , fromIndex) searchElement : 必须。需要查找的元素值。 fromIndex:可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。 |
let arr = ["a","b","c","d"]; let result1 = arr.includes("b"); let result2 = arr.includes("b",2); let result3 = arr.includes("b",-1); let result4 = arr.includes("b",-3); console.log(result1); // true console.log(result2); // false console.log(result3); // flase console.log(result4); // true | |
copyWithin() | 用于从数组的指定位置拷贝元素到数组的另一个指定位置中,会覆盖原有成员 array.copyWithin(target , start , end) target :必需。从该位置开始替换数据。 start :可选。从该位置开始读取数据,默认为 0 。如果为负值,表示倒数。 end: 可选。到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。 |
let arr = [1,2,3,4,5,6]; let result1 = [1,2,3,4,5,6].copyWithin(0); let result2 = [1,2,3,4,5,6].copyWithin(0,1); let result3 = [1,2,3,4,5,6].copyWithin(1,3,5); let result4 = [1,2,3,4,5,6].copyWithin(1,2,-1); let result5 = [1,2,3,4,5,6].copyWithin(1,-4,6); console.log(result1); // [1, 2, 3, 4, 5, 6] console.log(result2); // [2, 3, 4, 5, 6, 6] console.log(result3); // [1, 4, 5, 4, 5, 6] console.log(result4); // [1, 3, 4, 5, 5, 6] console.log(result5); // [1, 3, 4, 5, 6, 6] |