JavaScript 数组方法(三)

2024-04-05 438 0

1. entries() 方法

entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。迭代对象中数组的索引值作为 key, 数组元素作为 value。可以借助for …of…遍历。

语法

array.entries()

例如:

let arr = ['Google', 'Baidu', 'Jindong', 'Wangyi','Taobao'];
let newArr = arr.entries();
console.log(newArr)

//for...of...遍历
for(obj of newArr) {
    console.log(obj)
}

2. keys() 方法

keys() 方法用于从数组创建一个包含数组键的可迭代对象。如果对象是数组返回 true,否则返回 false。

语法

array.keys()

例如:

let arr = ['Google', 'Baidu', 'Jindong', 'Wangyi','Taobao'];
let newArr = arr.keys();
console.log(newArr)

//for...of...遍历
for(obj of newArr) {
    console.log(obj)
}

3. from() 方法

from() 方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。

语法

Array.from(object, mapFunction, thisValue)
参数描述
object必需,要转换为数组的对象。
mapFunction可选,数组中每个元素要调用的函数。
thisValue可选,映射函数(mapFunction)中的 this 对象。

返回值:数组对象。

例如:将上面 entries() 方法和 keys() 方法创建的可迭代对象转为数组。

let arr = ['Google', 'Baidu', 'Jindong', 'Wangyi','Taobao'];
let keysArr = Array.from(arr.entries());
let keysArr2 = Array.from(arr.keys());
console.log(keysArr);
console.log(keysArr2);

4. reduce() 方法

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。对于空数组是不会执行回调函数的

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数描述
function(total,currentValue, index,arr)必需。用于执行每个数组元素的函数。
initialValue可选。传递给函数的初始值
函数参数描述
total必需。初始值, 或者计算结束后的返回值。
currentValue必需。当前元素
currentIndex可选。当前元素的索引
arr可选。当前元素所属的数组对象。

返回值:返回计算结果。

例如:计算数组中元素的总和。

let numbers = [10, 40, 30, 40, 20, 50];
//回调函数
function sum(total, currentValue, currentIndex, arr) {
    console.log(total, currentValue, currentIndex, arr);
    return total + currentValue;
}
//计算结果
let result = numbers.reduce(sum, 0)
console.log(result);

5. reduceRight() 方法

reduceRight() 方法和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加。

let numbers = [10, 40, 30, 40, 20, 50];
//回调函数
function sum(total, currentValue, currentIndex, arr) {
    console.log(total, currentValue, currentIndex, arr);
    return total + currentValue;
}
//计算结果
let result = numbers.reduceRight(sum, 0)
console.log(result);

7. find() 方法

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。对于空数组,函数是不会执行的。并没有改变数组的原始值。find() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined

语法

array.find(function(currentValue, index, arr))
回调参数描述
currentValue必需。当前元素
index可选。当前元素的索引值
arr可选。当前元素所属的数组对象

返回值:返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回 undefined

例如:找到数组中第一个大于30的元素。

let numbers = [10, 40, 30, 40, 20, 50];
let result = numbers.find((value,index) => {
    console.log(value,index)
    return value > 30;
});
console.log(result);

8. findIndex() 方法

findIndex() 方法返回符合测试条件(函数)的数组第一个元素位置。对于空数组,函数是不会执行的,并没有改变数组的原始值。findIndex() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 -1

语法

array.findIndex(function(currentValue, index, arr))

返回值:返回符合测试条件的第一个数组元素索引,如果没有符合条件的则返回 -1。

例如:

let numbers = [10, 40, 30, 40, 20, 50];
let result = numbers.findIndex((value,index) => {
    console.log(value,index)
    return value > 30;
});
console.log(result);

9. valueOf() 方法

valueOf() 方法返回 Array 对象的原始值。不会改变原数组。valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

语法

array.valueOf()

例如:

let numbers = [10, 40, 30, 40, 20, 50];
console.log(numbers.valueOf())
//结果:[10, 40, 30, 40, 20, 50]
console.log(numbers.valueOf() === numbers)
//结果:true

numbers.valueOf()与numbers返回值是一样的。

10. fill() 方法

fill() 方法用于将一个固定值替换数组的元素。( IE 11 及更早版本不支持 fill() 方法。)

语法

array.fill(value, start, end)
参数描述
value必需。填充的值。
start可选。开始填充位置。
end可选。停止填充位置 (默认为 array.length)

例如:填充数组索引为2~4的元素为100

let numbers = [10, 40, 30, 40, 20, 50];
numbers.fill(100,2,4)
console.log(numbers)
//结果:[10, 40, 100, 100, 20, 50]

11. copyWithin() 方法

copyWithin() 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中。

语法

array.copyWithin(target, start, end)
参数描述
target必需。复制到指定目标索引位置。
start可选。元素复制的起始位置。
end可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数。

例如:复制数组索引为0~3(不包括3)的元素到索引为2 的位置上。

let numbers = [10, 40, 30, 40, 20, 50];
numbers.copyWithin(2,0,3)
console.log(numbers)
//结果:[10, 40, 10, 40, 30, 50]

12. Array.of() 方法

Array.of() 方法用于将一组值转换为数组,不考虑参数的数量或类型。

语法

Array.of(element0)
Array.of(element0, element1)
Array.of(element0, element1, /* … ,*/ elementN)

例如:

console.log(Array.of(10, 40, 30, 40, 20, 50))
console.log(Array.of('Google', 'Baidu', 'Jindong', 'Wangyi','Taobao'))

Array.of() 和 Array() 构造函数之间的区别在于对单个参数的处理:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个 length 为 7 的空数组。

let arr = Array.of(7)
let arr2 = new Array(7)
console.log(arr,arr2)

相关文章

JavaScript数组去重
JavaScript 数组方法(二)
JavaScript 数组方法(一)
JS身份证精确校验
前端js实现打包下载文件
前端pdf文件在线预览

发布评论