一篇文章汇总前端ES6和JavaScript数组的所有方法

彬彬太逊了 2024-10-01 10:33:01 阅读 77

前端ES6和JavaScript数组的方法汇总

文章目录

前端ES6和JavaScript数组的方法汇总前言一、首先我们来看看数组是如何创建:1.直接创建数组2.利用构造函数创建数组3.使用Set直接创建数组,创建的数组会自动去重,不会出现重复的元素(后面数组也有方法实现该效果)4.使用map创建数组,一个元素是键值对的数组或其他可迭代对象它的每个键值对都被添加到新的Map中

二、数组的方法1.数组基础静态方法1-1.Array.from()1-2.Array.isArray()

2.数组的实例方法2-1.Array.prototype.at()2-2.Array.prototype.concat()2-3.Array.prototype.copyWithin()2-4.Array.prototype.entries()2-5.Array.prototype.every()2-6.Array.prototype.fill()2-7.Array.prototype.filter()2-8.Array.prototype.find()2-9.Array.prototype.findIndex()2-10.Array.prototype.findLast()2-11.Array.prototype.findLastIndex()2-12.Array.prototype.flat(num)2-13.Array.prototype.flatMap(num)2-14.Array.prototype.forEach()2-15.Array.prototype.includes(num)2-16.Array.prototype.indexOf(num)2-17.Array.prototype.join()2-18.Array.prototype.keys()2-19.Array.prototype.lastIndexOf(num)2-20.Array.prototype.pop()2-21.Array.prototype.push(element)2-22.Array.prototype.reduce()2-23.Array.prototype.reduceRight()2-24.Array.prototype.reverse()2-25.Array.prototype.shift()2-26.Array.prototype.slice(start,end)2-27.Array.prototype.some()2-28.Array.prototype.sort()2-29.Array.prototype.splice()2-30.Array.prototype.toLocaleString()2-31.Array.prototype.toReversed()2-32.Array.prototype.toSorted()2-33.Array.prototype.unshift()2-34.Array.prototype.values()2-35.Array.prototype.with()

前言

这是本人汇总的前端操作数组的所有方法,如有错误感谢指正!

一、首先我们来看看数组是如何创建:

1.直接创建数组

<code>let arr = [1, 2, 3, 4, 5];

console.log(arr);//输出[1,2,3,4,5]

2.利用构造函数创建数组

let arr2 = new Array(1, 2, 3, 4, 5);

console.log(arr2);//输出[1,2,3,4,5]

3.使用Set直接创建数组,创建的数组会自动去重,不会出现重复的元素(后面数组也有方法实现该效果)

let arr3 = new Set([1, 1, 4, 5, 1, 4]);

console.log(arr3);//输出[1,4,5]

4.使用map创建数组,一个元素是键值对的数组或其他可迭代对象它的每个键值对都被添加到新的Map中

let myMap = new Map(

[

['1', 'one'],

['2', 'two'],

['3', 'three'],

]

)

console.log(myMap);//{'1' => 'one', '2' => 'two', '3' => 'three'}

//再通过Array.from()方法将其转变为数组

let newArr2 = Array.from(myMap);

console.log(newArr2);// 输出: [[1, 'one'], [2, 'two'], [3, 'three']]

二、数组的方法

1.数组基础静态方法

1-1.Array.from()

作用:将可迭代或者类数组的对象创建一个新的浅拷贝的数组实例

将字符串的每个字符变为一个一个数组的元素

console.log(Array.from('abcde'));//['a','b','c','d','e']

对现有数组进行操作,这里让数组的每个元素自己加上自己

console.log(Array.from([1, 2, 3], (x) => x + x));//[2,4,6]

从类数组对象中构建数组

function fn() {

return Array.from(arguments);

}

console.log(fn(1, 2, 3, 'iu'));//[1, 2, 3, 'iu']

1-2.Array.isArray()

作用:判断传递的值是不是数组,返回布尔值true或者false

console.log(Array.isArray([1, 3, 5]));//true

console.log(Array.isArray('cxk'));//false

2.数组的实例方法

2-1.Array.prototype.at()

at方法

该方法接受一个整数值并返回改索引对应的元素,可以传正整数和负整数。负整数会从数组最后一个开始。该方法就是根据下标找数组对应的元素然后下标是正整数就从前往后查找,反之从后往前。

注意点:从前往后的话下标从0开始,但从后往前就是从1开始

let arr = [1, 2, 3, 4, 5];

let index1 = 1;

console.log(arr.at(index1));//2

let index2 = -1;

console.log(arr.at(index2));//5

2-2.Array.prototype.concat()

concat方法

该方法用于合并两个数组,不会改变原数组,而是返回一个新数组。

let arr1 = [1, 2, 3];

let arr2 = ['cxk', 567];

let newArr = arr1.concat(arr2);

//原数组均未改变

console.log(arr1);//[1,2,3]

console.log(arr2);//['cxk', 567]

console.log(newArr);//[1, 2, 3, 'cxk', 567]

2-3.Array.prototype.copyWithin()

copyWithin方法

该方法可以浅复制数组的一部分到这个数组中的另一个位置,并返回他,不会改变原数组的长度。

默认写法arr.copyWithin(target, start, end)/target(必需):从该位置开始替换数据。

start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。

end(可选):到该位置前停止读取数据,默认为数组长度。如果为负值,表示倒数。

let arr = [1, 2, 3, 4, 5];

let newArr = arr.copyWithin(0, 2, 4);

console.log(newArr); // 输出: [3, 4, 3, 4, 5]

arr.copyWithin(0, 2, 4) //表示从索引 2 开始复制,复制到索引 4(不包括索引 4),然后将复制的元素覆盖到索引 0 开始的位置。

2-4.Array.prototype.entries()

entries方法

该方法返回一个新的数组迭代器对象,包含数组的每个键值对。

let arr1 = ['a', 'b', 'c'];

let iter1 = arr1.entries();

console.log(iter1);

console.log(iter1.next().value);//[0, 'a']

console.log(iter1.next().value);//[1, 'b']

2-5.Array.prototype.every()

every方法

该方法将查找数组的各个元素,如果所有元素全部符合指定条件返回true,有一个元素不满足就返回false。

let arr = [1, 2, 3, 4, 5];

let bool1 = arr.every(function (item, index) {

return item > 3;

})

console.log(bool1);//false

let bool2 = arr.every(function (item, index) {

return item >= 1;

})

console.log(bool2);//true

2-6.Array.prototype.fill()

fill方法

方法用一个固定值填充一个数组中从起始索引(默认为 0)到终止索引(默认为 array.length)内的全部元素。它返回修改后的数组。

语法:array.fill(value, start, end);

value:要填充的值。

start:开始填充的索引,默认为0。

end:停止填充的索引(不包含该索引),默认为数组长度。

let arr = [1, 2, 3, 4, 5];

arr.fill('cxk', 2, 4)//[2,4) -- 包前不包后

console.log(arr);//[1, 2, 'cxk', 'cxk', 5]

2-7.Array.prototype.filter()

filter方法

创建给定数组一部分的浅拷贝,其包含通过所提供函数实现的测试的所有元素。

let arr = [1, 2, 3, 4, 5];

let newArr = arr.filter(function (item, index) {//item是数组的每一项元素,index是数组对应的下标

return item > 3

})

console.log(newArr);//[4,5]

2-8.Array.prototype.find()

find方法

返回数组中满足条件的第一个元素的值。没有则返回undefined。

let arr = [1, 2, 3, 4, 5];

let newArr1 = arr.find(function (item, index) {

return item > 3;

})

console.log(newArr1);//4

let newArr2 = arr.find(function (item, index) {

return item > 6;

})

console.log(newArr2);//undefined

该方法用法和上面的filter方法有点像,但find方法是只返回第一个符合条件的值,而filter方法会返回所有符合体条件的值。

2-9.Array.prototype.findIndex()

findIndex方法

顾名思义,上面的find方法是返回组中满足条件的第一个元素的值,那么findIndex是返回数组中满足条件的第一个元素的下标/索引.没有则返回-1.

let arr = [1, 2, 3, 4, 5];

let newArr1 = arr.findIndex(function (item, index) {

return item > 3;

})

console.log(newArr1);//3

let newArr2 = arr.findIndex(function (item, index) {

return item > 6;

})

console.log(newArr2);//-1

2-10.Array.prototype.findLast()

findLast方法

并返回满足提供的测试函数的第一个元素的值。如果没有找到对应元素,则返回 undefined。

可以理解为将find的查找顺序反过来,变为从后往前查找,但是要注意从后往前查找下标从数组最后一个开始,而不是0。

let arr = [1, 2, 3, 4, 5];

let newArr1 = arr.findLast(function (item, index) {

return item > 3;

})

console.log(newArr1);//5

let newArr2 = arr.findLast(function (item, index) {

return item > 6;

})

console.log(newArr2);//undefined

2-11.Array.prototype.findLastIndex()

findLastIndex方法

反向迭代数组,并返回满足所提供的测试函数的第一个元素的索引。若没有找到对应元素,则返回 -1。

let arr = [1, 2, 3, 4, 5];

let newArr1 = arr.findLastIndex(function (item, index) {

return item > 3;

})

console.log(newArr1);//4

let newArr2 = arr.findLastIndex(function (item, index) {

return item > 6;

})

console.log(newArr2);//-1

2-12.Array.prototype.flat(num)

flat方法

创建一个新的数组,并根据指定深度递归地将所有子数组元素拼接到新的数组中.

说白点就是可以将数组内嵌套数组的样式展开。

这里数组里面嵌套了一个数组。

let arr = [1, 2, 3, 4, 5, [6, 6, 6, 6]];

let newArr = arr.flat();

console.log(newArr);//[1, 2, 3, 4, 5, 6, 6, 6, 6]

//可以在flat()的括号里面传值,表示分解多少层嵌套数组,如果填入Infinity(注意首字母I要大写)就是将数组完全变成平面无嵌套数组,不管数组呦多少层

let arr2 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];

let newArr2 = arr2.flat(Infinity);

console.log(newArr2);

2-13.Array.prototype.flatMap(num)

flatMap方法

对数组中的每个元素应用给定的回调函数,然后将结果展开一级,返回一个新数组。它等价于在调用 map() 方法后再调用深度为 1 的 flat() 方法(arr.map(…args).flat()),但比分别调用这两个方法稍微更高效一些。

let arr = [1, 2, 1];

let result = arr.flatMap((num) => (num === 2 ? [2, 2] : 1));

console.log(result);[1, 2, 2, 1]

2-14.Array.prototype.forEach()

forEach方法

对数组每个元素循环遍历

let arr = [1, 2, 3, 4, 5];

arr.forEach(function (item, index) {//item数组元素,index下标/索引

console.log('元素是' + item);//1, 2, 3, 4, 5

console.log('下标是' + index);//0,1,2,3,4

})

2-15.Array.prototype.includes(num)

includes方法

用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false,num为你指定的值

let arr = [1, 2, 3, 4, 5];

console.log(arr.includes(3));//true -- 数组里有3这个元素则返回true

console.log(arr.includes('cxk'));//false -- 么有则返回false

2-16.Array.prototype.indexOf(num)

indexOf方法

返回数组中第一次出现给定元素的下标,如果不存在则返回 -1,num为你指定的值来查找num的下标

let arr = [1, 2, 3, 4, 5, 3, 2, 1];

console.log(arr.indexOf(3));//2 -- 有就返回该元素的下标

console.log(arr.indexOf(9));//-1 -- 没有该元素就返回固定-1

2-17.Array.prototype.join()

join方法

将数组转化为字符串

let arr = [1, 2, 3, 4, 5];

let str = arr.join();

console.log(str);//1,2,3,4,5

2-18.Array.prototype.keys()

keys方法

返回一个新的数组迭代器对象,其中包含数组中每个索引的键

let arr = [1, 2, 3, 4, 5];

let newArr = arr.keys();

for (let key of newArr) {

console.log(key);//0,1,2,3,4

}

2-19.Array.prototype.lastIndexOf(num)

lastIndexOf方法,

从后往前返回数组中第一次出现给定元素的下标,但是下标依然是从前往后的顺序,如果不存在则返回 -1,num为你指定的值来查找num的下标

let arr = [1, 2, 3, 4, 5];

console.log(arr.lastIndexOf(3));//2 -- 有就返回该元素的下标

console.log(arr.lastIndexOf(6));//-1 -- 没有该元素就返回固定-1

2-20.Array.prototype.pop()

pop方法

删除原数组的最后一个元素(会改变原数组)

let arr = [1, 2, 3, 4, 5];

arr.pop();

console.log(arr);//[1,2,3,4]

2-21.Array.prototype.push(element)

push方法

添加指定元素到数组末尾,element就是你要指定的元素(会改变原数组)

let arr = [1, 2, 3, 4, 5];

arr.push('cxk');

console.log(arr);//[1, 2, 3, 4, 5,'cxk']

2-22.Array.prototype.reduce()

reduce方法

数组按照顺序将每个元素执行一次reduce函数里的方法,返回一个新数组

let arr = [1, 2, 3, 4, 5];

let newArr = arr.reduce((item, index) => item + index)//这是指将每个元素相加

console.log(newArr);//15

2-23.Array.prototype.reduceRight()

reduceRight方法

同2-22,但是是从右到左进行遍历

let arr = [1, 2, 3, 4, 5];

let newArr = arr.reduceRight((item, index) => item + index)//这是指将每个元素相加

console.log(newArr);//15

2-24.Array.prototype.reverse()

reverse方法

将数组反转

let arr = [1, 2, 3, 4, 5];

arr.reverse();

console.log(arr);//[5, 4, 3, 2, 1]

2-25.Array.prototype.shift()

shift方法

删除数组第一个开头元素(会改变原数组)

let arr = [1, 2, 3, 4, 5];

arr.shift();

console.log(arr);//[1,2, 3, 4, 5]

2-26.Array.prototype.slice(start,end)

slice方法

截取数组中指定的范围内的元素并构建为一个新数组

注意:[start,end)包前不包后

let arr = [1, 2, 3, 4, 5];

let newArr = arr.slice(2, 4);

console.log(newArr);//[3,4]

2-27.Array.prototype.some()

some方法

查找数组中的第一个符合条件元素是否是指定元素,是返回true,不是返回false

let arr = [1, 2, 3, 4, 5, 6];

let Bool1 = arr.some((item, index) => item > 3);

console.log(Bool1);//true

let Bool2 = arr.some((item, index) => item > 100);

console.log(Bool2);//false

2-28.Array.prototype.sort()

sort方法

数组排序,按照指定要求顺序后倒序排序数组

sort()括号里面不传参数默认是顺序排列数组

传入函数,函数传出你a和b,a-b就是顺序,b-a就是倒序

let arr = [3, 2, 78, 900, 56, 88, 1];

console.log(arr.sort());//[1, 2, 3, 56, 78, 88, 900]

console.log(arr.sort(function (a, b) {

return a - b

}));//[1, 2, 3, 56, 78, 88, 900]

console.log(arr.sort(function (a, b) {

return b - a

}));//[900, 88, 78, 56, 3, 2, 1]

2-29.Array.prototype.splice()

splice方法

删除已有元素或添加新的元素

同样也是包前不包后

删除语法:数组.splice(开始的索引,要删除的元素)

添加语法:数组.splice(开始的索引,要删除的元素(默认为0),要添加的具体元素)

//删除

let arr1 = [1, 2, 3, 4, 5,];

arr1.splice(0, 2)

console.log(arr1);//[3,4,5]

//添加 -- 添加的元素在占用下标后会把原改下表以及它后面的元素往后挤一格

let arr2 = [1, 2, 3, 4, 5];

arr2.splice(0, 0, 'cxk')

console.log(arr2);//['cxk', 1, 2, 3, 4, 5]

2-30.Array.prototype.toLocaleString()

toLocaleString方法

将数组中的每个元素转换为字符串

let arr = [1, 2, 3, 4, 5];

let newArr = arr.toLocaleString();

console.log(newArr);//1,2,3,4,5

2-31.Array.prototype.toReversed()

toReversed方法

返回该数组元素顺序相反的新数组

let arr = [1, 2, 3, 4, 5];

let newArr = arr.toReversed();

console.log(newArr);//[5, 4, 3, 2, 1]

2-32.Array.prototype.toSorted()

toSorted方法

它返回一个新数组,元素升序排列

注意:升序排列是按照数组元素的首字母的大小来的

let arr = [1, 2, 4, 47, 543, 33, 12, 45, 56, 'b', 'c', 'a'];

let newArr = arr.toSorted();

console.log(newArr);//[1, 12, 2, 33, 4, 45, 47, 543, 56, 'a', 'b', 'c']

2-33.Array.prototype.unshift()

unshift方法

将指定元素添加到数组的开头,并返回数组的新长度

let arr = [1, 2, 3, 4, 5];

let newArrLength = arr.unshift(0);

console.log(newArrLength);//6

2-34.Array.prototype.values()

values方法

该对象迭代数组中每个元素的值

let arr = [1, 2, 3, 4, 5];

let newArr = arr.values()

for (let items of newArr) {

console.log(items);//1,2,3,4,5

}

2-35.Array.prototype.with()

with方法

使用方括号表示法修改指定索引值的复制方法版本。它会返回一个新数组,其指定索引处的值会被新值替换。

let arr = [1, 2, 3, 4, 5];

let newArr = arr.with(2, 'cxk');

console.log(newArr);//[1, 2, 'cxk', 4, 5]



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。