创建数组

方式一

const arr = new Array();
arr[0] = 'a';
arr[1] = 'b';
console.log(arr);

方式二

const arr2 = new Array('a', 'b');

方式三

const arr3 = ['a', 'b'];

Array.length

  1. 遍历数组
const arr = [1, 2, 3];
for(let i=0; i<arr.length; i++){
arr[i] += 2;
}
  1. 截断数组
const arr = [1, 2, 3, 4];
arr.length = 3 //[1, 2, 3]

Array.from(伪数组,新数组的每个元素会执行该回调函数,执行函数时的this对象)

  1. 转为数组
Array.isArray(document.querySelectorAll('div')); //false

//方式一
Array.isArray([].slice.call(document.querySelectorAll('div')))  //true

//方式二
Array.isArray(Array.from(document.querySelectorAll('div')))

2 创建数组0-99的数组

Array.from({length:100},(x,i)=>{return i})

Array.isArray

确定传递到值是否是一个Array

Array.isArray(obj)
//返回对象是Array则为true,否则为false

Array.of()
Array.of()方法创建一个具有可变数量参数的新数组实例(不考虑参数的数量或类型)

const arr = Array.of(1, 2, 3) //[1, 2, 3]

concat()
合并多个数组

arr.concat([1,2,3])

copyWithin()
copyWithin(target,start,end)
copyWithin()方法浅复制数组的一部分到同一数组中的另一个位置,不会改变数组的长度

const arr = [0, 1, 2, 3, 4, 5, 6].copyWithin(0, 4, 6)  //[4, 5, 2, 3, 4, 5, 6]

const arr2 = [0, 1,2 ,3 ,4 ,5 ,6].copyWithin(2, 4, 6) //[0, 1, 4, 5, 4, 5, 6]

every
测试所有数组元素是否通过了指定函数

const arr = [1,2,3,4,5,6,7].every((val)=>{
return val>0
})  //true

fill
用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,不包括终止索引
arr.fill(用来填充数组元素的值,起始索引,终止索引)

const arr = [1, 2, 3, 4, 5].fill(4, 0, 2); //[4, 4, 3, 4, 5]

filter()
创建一个新数组,包含通过函数实现的测试的所有元素
arr.filter(callback(当前在数组中处理的元素,正在处理元素在数组中的索引,调用了filter的数组))

const arr = [1,2,3,4].filter((ele)=>{
return ele > 3;
})  //[4]

find()
返回数组中满足提供的测试函数的第一个元素的值,否则返回undefined
arr.find(callback(ele,index,array))

const arr = [1,2,3,4].find((ele)=>{
return ele > 1;
}) //2

findIndex()
返回数组中满足提供的测试函数的第一个元素的索引
arr.findIndex(callback(ele, index, array))

const arr = [1,2,3,4].findIndex((ele)=>{
return ele > 0;
})  //0

forEach()
对数组的每一个元素执行一次提供的函数
arr.forEach(callback(ele,index,array))

const arr2 = [];
 [1, 2, 3, 4].forEach((ele)=>{
 arr2.push(ele*3)
 })  //[3, 6, 9, 12]

includes()
判断一个数组是否包含一个指定的值,是则返回true,否则返回false
arr.includes(需要查找的元素);
arr.includes(需要查找的元素,从该处索引开始查找(默认为0));

var arr = ['abc', 'jhg'];
arr.includes('abc',0)
//true

indexOf()
返回在数组中可以找到一个给定元素的第一个索引,如果不存在则返回-1
arr.indexOf(要查找的元素)
arr.indexOf(要查找的元素,开始查找的位置)

var arr = ['abc', 'jhg'];
arr.indexOf('jhg')
1
arr.indexOf('abc')
0

join()
将一个数组的所有元素连接成一个字符串并返回这个字符串

const arr = [1,2,3];
arr.join('')
"123"

lastIndexOf()
返回指定元素在数组中的最后一个索引,如果不存在则返回-1
arr.lastIndexOf(被查找的元素,fromIndex(从该位置开始逆向查找))

[0,1,2,2,2].lastIndexOf(2)
4
[0,1,2,2,2].lastIndexOf(2,3)
3
[0,1,2,2,2].lastIndexOf(2,1)
-1

map()
创建一个新数组。结果是该数组中的每一个元素都调用一个提供的函数后返回的结果
arr.map(callback(ele,index,array))

const arr = [{
key:'a',
},{
key:'b'
}]
const arr2 = arr.map((ele)=>{
const obj = [];
obj.push(ele.key);
return obj;
})

pop()
pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。

arr.pop()

const arr = [ 1, 3, 5];
arr.pop()  //5
arr // [1, 3]

push()
将一个或多个元素添加到数组的末尾,并返回新数组的长度

const arr = [ 1, 3, 5];
arr.push(1,2,3,4) //6
arr //[1, 3, 5, 1, 2, 3, 4]

shift
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
arr.shift()

[1,2,3].shift()
//1

unshift()
从数组的索引为0位置添加
arr.unshift()

const arr = [1, 3, 1, 2, 3, 4]
arr.unshift(11)
//7
arr // [11, 1, 3, 1, 2, 3, 4]

reduce()
对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。
arr.reduce(callback[, initialValue])
callback参数 (累加器累加回调的返回值,数组中正在处理的元素,数组中正在处理的当前的索引,调用reduce的数组,用作第一个调用callback的第一个参数的值)

[[1,2,3],[4,5,6]].reduce((a,b)=>{
return a.concat(b);
})
// [1, 2, 3, 4, 5, 6]

//数组求和
arr.reduce(function(a,b){
return(a+b)
})

reverse()
将数组中元素的位置颠倒。
arr.reverse()

[1,2,3,4].reverse()
// [4, 3, 2, 1]

slice()
方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。

语法:arr.slice() //[0,end]
 arr.slice(begin) //[begin,end]
 arr.slice(begin,end) //[begin,end]


begin从该索引处开始提取愿数组中的元素(从0开始)
end(包含begin,但不包含end)
返回值:一个含有提取元素的新数组

const arr = ['a', 'b', 'c']
undefined
arr.slice(0,1) //["a"]

some()
测试数组中的某些元素是否通过由提供的函数实现的测试。
arr.some(callback[, thisArg])
callback参数:(数组中正在处理的元素。数组中正在处理的元素的索引值,some()被调用的数组,执行callback时使用的this值)
回调函数返回任何数组元素的truthy值,则返回true;否则为false。
判断数组元素中是否存在某个值

const arr = ['abc', 'bcd'];
undefined
arr.some((a,b)=>{
return a==='abc'
})
//true

sort()
数组的元素进行排序,并返回数组

const items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic' },
  { name: 'Zeros', value: 37 }
];
items.sort((a,b)=>{
 return b.value - a.value
})

//
[{name: "And", value: 45}
{name: "Sharpe", value: 37}
{name: "Edward", value: 21}
{name: "The", value: -12}
{name: "Magnetic"}
{name: "Zeros", value: 37}]

splice()
过删除现有元素和/或添加新元素来更改一个数组的内容
array.splice(start[, deleteCount[, item1[, item2[, …]]]])
start
指定修改的开始位置(从0计数)
deleteCount 可选
整数,表示要移除的数组元素的个数
item1, item2, … 可选
要添加进数组的元素,从start 位置开始。

从第0位开始删除0个元素,插入“aaa”

const myFish = ["angel", "clown", "mandarin", "surgeon"]; 
undefined
myFish.splice(0,0 'aaa')
// ["aaa", "angel", "clown", "mandarin", "surgeon"]

从第1位开始删除2个元素

["aaa", "angel", "clown", "mandarin", "surgeon"]
myFish.splice(1,2);
// ["angel", "clown"]
myFish
// ["aaa", "mandarin", "surgeon"]

判断一个对象中是否有某个key值

const a = {'a':123,'b':234};
if('a' in a){
alert(1);
}