JavaScript数组方法总结

(一) 数组常用方法

1. toString()

把数组转换为数组值(逗号分隔)的字符串。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
console.log(arr.toString());
console.log(typeof arr.toString());    //数据类型

输出:
在这里插入图片描述

2. join()

把数组里的元素连接成一个字符串。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
console.log(arr.join());
console.log(arr.join(''));
console.log(arr.join('-'));
console.log(arr.join('&'));

输出:
在这里插入图片描述

3. push()

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

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.push('JavaScript', 'vue');
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

4. pop()

删除最后一个元素,并返回该元素的值。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.pop();
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

5. unshift()

一个或多个元素添加到数组的开头,并返回该数组的新长度。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.unshift(23, '二十三');
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

6. shift()

从数组中删除第一个元素,并返回该元素的值。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.shift();
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

7. splice()

可以对数组进行添加、替换、删除操作。

例:
(1)添加:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
//在索引为2处添加元素
const result = arr.splice(2, 0 , 'two');
console.log('新数组为:' + arr);

输出:
在这里插入图片描述
(2)替换

let arr = [1,2,'你好',4,5,'hello',7,8,9];
//将索引为2处的元素替换成two
const result = arr.splice(2, 1 , 'two');
console.log('新数组为:' + arr);

输出:
在这里插入图片描述
(3) 删除

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.splice(2, 1);
//从索引为2的元素开始,删除一个元素
console.log('新数组为:' + arr);

输出:
在这里插入图片描述

8. slice()

裁剪数组,用数组的某个片段切出新数组。返回一个新的数组,不改变原数组。

例:
(1)slice(start, end),从start开始截取,不包括end。

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.slice(0, 3);
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述
(2)slice(start),从start开始截取,一直到末尾。

let arr = [1,2,'你好',4,5,'hello',7,8,9];
const result = arr.slice(3);
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

9. concat()

合并两个或多个数组。返回一个新数组,不改变原数组。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
let arr1 = ['ten','eleven']
const result = arr.concat(arr1);
console.log('新数组为:' + arr);
console.log('返回值为:' + result);

输出:
在这里插入图片描述

10. includes()

用来判断一个数组是否包含一个指定的值,返回一个布尔值。

例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
console.log(arr.includes('你好'));

输出:
在这里插入图片描述

11. isArray()

用于确定传递的值是否是一个数组。
例:

let arr = [1,2,'你好',4,5,'hello',7,8,9];
console.log(Array.isArray('你好'));
console.log(Array.isArray(arr));

输出:
在这里插入图片描述

12. reverse()

反转数组中的元素,并返回该数组。改变原数组。

例:

let arr1 = [1, 2, 3, 4, 5, 6, 7];
console.log(arr1.reverse());

输出:
在这里插入图片描述

(二) 数组迭代方法

13. forEach()

对数组的每个元素执行一次给定的函数。

例:

let arr1 = [1, 2, '你好'];
arr1.forEach(item => {
   console.log(item);
 });

输出:
在这里插入图片描述

14. map()

对数组的每个元素执行一次给定的函数,返回新的数组。不改变原数组。

例:

let arr1 = [1, 2, '你好'];
let result = arr1.map(item => {
     return item + 'map';
   });
 console.log(arr1);
 console.log(result);

输出:
在这里插入图片描述

15. filter()

数组过滤,返回一个新数组, 包含通过测试的所有数组元素。
filter(value, index, array) ,接收三个参数:元素值、元素索引、数组本身。后两个参数可以省略。

例:

let arr1 = [1, 2, '你好'];
let result = arr1.filter(item => {
   return item <= 1;
 });
 console.log(arr1);
 console.log(result);

输出:
在这里插入图片描述

16. reduce()

对数组中的每个元素执行一个我们提供的函数,结果汇总为单个返回值。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
提供的函数接受四个参数:
Accumulator (acc) (累计器)上一次调用回调函数时,回调函数返回的值。首次调用回调函数时,如果 initialValue 存在,累加器即为 initialValue,否则须为数组中的第一个元素
Current Value (cur) (当前值)
Current Index (idx) (当前索引)可选
Source Array (src) (源数组)可选

initialValue:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。可选。

例:

let arr1 = [1, 2, 3, 4];
let function_example = (accumulator, currentValue) => accumulator + currentValue;
 let result1 = arr1.reduce(function_example); //1+2+3+4 = 10
 let result2 = arr1.reduce(function_example, 10); //1+2+3+4+10=20
 console.log(result1);
 console.log(result2);

输出:
在这里插入图片描述
应用:
(1)数组求和,见上文例子
(2)统计元素出现的次数

let arr = ['one', 'two', 'three', 'one', 'two'];
let result = arr.reduce(function (accumulator, currentValue) {
  if (currentValue in accumulator) {
    accumulator[currentValue]++;
  }
  else {
    accumulator[currentValue] = 1;
  }
  return accumulator;
}, {});
console.log(result);

输出:
在这里插入图片描述

17. reduceRight()

同reduce()差不多,唯一不一样的地方就是数组中的元素是从右往左。
对数组中的每个元素执行一个我们提供的函数,结果汇总为单个返回值。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
提供的函数接受四个参数:
(1)Accumulator (acc) (累计器):上一次调用回调函数时,回调函数返回的值。首次调用回调函数时,如果 initialValue 存在,累加器即为 initialValue,否则须为数组中的最后一个元素
(2)Current Value (cur) (当前值)
(3)Current Index (idx) (当前索引)可选
(4)Source Array (src) (源数组)可选

initialValue:作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的最后一个元素。 在没有初始值的空数组上调用 reduce 将报错。可选。

例:

let arr1 = ['1', '2', '3', '4'];
let function_example = (accumulator, currentValue) => accumulator + currentValue;
let result1 = arr1.reduce(function_example); 
let result2 = arr1.reduceRight(function_example); 
console.log(result1);
console.log(result2);

输出:
在这里插入图片描述

18. every()

方法检查所有数组值是否通过测试。不改变原数组,不检测空数组。
array.every(function(currentValue,index,arr), thisArg)

第一个参数是回调函数,必须。
element:元素值,必须
index:索引,可选
array:数组本身,可选
第二个参数:执行 callback 时使用的 this 值。可选

例:

let arr1 = [1, 2, 3, 4];
let result = arr1.every(item => {
  return item > 3;
})
let result1 = arr1.every(item => {
  return item > 0;
})
console.log('数组元素值都大于3吗: ' + result);
console.log('数组元素值都大于0吗: ' + result1);

输出:
在这里插入图片描述

19. some()

检查某些数组值是否通过了测试。不改变原数组,不检测空数组。参数同every()。
some()every()不一样的地方是,some()是只要有一个元素通过可检测,就返回true,不继续检测了,如果一个数组元素都通过不了的话,返回false

例:

let arr1 = [1, 2, 3, 4];
let result = arr1.some(item => {
  return item > 3;
})
let result1 = arr1.some(item => {
  return item > 4;
})
console.log('数组元素值有大于3的吗: ' + result);
console.log('数组元素值有大于4吗: ' + result1);

输出:
在这里插入图片描述

20. indexOf()

返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
array.indexOf(item, start)
参数1:item,必须,要检索的元素
例:start,可选,从哪开始检索

let arr1 = [1, 2, 3, 4];
console.log(arr1.indexOf(1));
console.log(arr1.indexOf(2));
console.log(arr1.indexOf(5));

输出:
在这里插入图片描述

21. lastIndexOf()

返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找。
array.lastIndexOf(item, start)
参数同indexOf()
例:

let arr1 = [1, 2, 3, 4, 1, 2, 4];
console.log(arr1.lastIndexOf(1));
console.log(arr1.lastIndexOf(2));
console.log(arr1.lastIndexOf(5));

输出:
在这里插入图片描述

22. find()

返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
array.find(callback[, thisArg])
参数1:callback包含三个参数:
element:元素值。
index:索引,可选。
array:数组本身,可选。
参数2:thisArg执行回调时用作this 的对象。

例:

let arr1 = [1, 2, 3, 4, 1, 2, 4];
let result = arr1.find(item => item === 1);
let result1 = arr1.find(item => item === 5);
console.log('满足测试的第一个元素值为:' + result);
console.log(result1);

输出:
在这里插入图片描述

23. findIndex()

返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
arr.findIndex(callback[, thisArg])
参数同 find()
例:

let arr1 = [1, 2, 3, 4, 1, 2, 4];
let result = arr1.findIndex(item => item === 2);
let result1 = arr1.findIndex(item => item === 5);
console.log('满足测试的第一个元素值2的索引为:' + result);
console.log('满足测试的第一个元素值5的索引为:' + result1);

输出:
在这里插入图片描述

(三) 数组排序方法

24. sort()

对数组的元素进行排序,并返回数组。
arr.sort([compareFunction])
参数1:compareFunction:用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。可选。
compareFunction(a, b)有两个参数:表示两个将要被比较的元素。

例:
(1)升序

let arr1 = [3, 2, 1, 4, 7, 6, 5];
const result1 = arr1.sort((a, b) => a - b );
console.log('a-b升序:' + result1);

输出:
在这里插入图片描述

(2)降序

let arr1 = [3, 2, 1, 4, 7, 6, 5];
const result2 = arr1.sort((a, b) => b - a );
console.log('b-a降序:' + result2);

输出:
在这里插入图片描述

(四) 数组不常用方法

25. at()

at()方法接受一个整数值,并返回该索引处的项,允许正整数和负整数。负整数从数组的最后一项开始倒数。

例:

let arr = [1,2,3,4,5,6,7,8,9];
let indexLeft = 2;
let indexRight = -2;
console.log('索引为2处的值为:' + arr.at(indexLeft));
console.log('索引为-2处的值为:' + arr.at(indexRight));

输出:
在这里插入图片描述

26. values()

返回一个新的 Array Iterator 对象,该对象包含数组每个索引的值。
想要了解values()详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/values

27. toLocaleString()

返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 “,”)隔开。
想要了解toLocaleString() 详情,请点击MDN官网:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString

28. of()

创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
想要了解of() 详情,请点击MDN官网:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/of

29. keys()

返回一个包含数组中每个索引键的Array Iterator对象。
想要了解keys() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/keys

30. from()

从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
想要了解from() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

31. flatMap()

首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。
想要了解flatMap() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

32. flat()

会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
想要了解flat() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

33. fill()

用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
想要了解fill() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill

34. entries()

返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
想要了解entries() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/entries

35. copyWithin()

浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
想要了解entries() 详情,请点击MDN官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin

参考1: https://developer.mozilla.org/zh-CN/
参考2: https://www.w3school.com.cn/index.html

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值