ES6数组新增方法详解:find、includes、fill等实例解析
本文系统总结了ES6中数组Array新增的核心方法。详细解析了find、findIndex、includes用于元素查找,keys、values、entries用于遍历,以及fill、Array.of、copyWithin、Array.from用于数组构造与修改的具体用法和参数说明,附带代码实例帮助理解。
ES6数组新增方法概述
本文详细总结了ES6标准中数组(Array)对象新增的若干实用方法,旨在为开发者提供清晰的参考与示例。
元素查找方法:find与findIndex
find方法的使用说明
let arr=[1,2,234,'sdf',-2];
arr.find(function(x){
return x<=2;
})//结果:1,返回第一个符合条件的x值
arr.find(function(x,i,arr){
if(x<2){console.log(x,i,arr)}
})//结果:1 0 [1, 2, 234, "sdf", -2],-2 4 [1, 2, 234, "sdf", -2]
find方法接收一个回调函数作为参数,该回调函数可接收三个参数:当前遍历的值x、索引i以及原数组arr。其默认返回第一个使回调函数返回真值的元素x。
findIndex方法的基本介绍
let arr=[1,2,234,'sdf',-2];
arr.findIndex(function(x){
return x<=2;
})//结果:0,返回第一个符合条件的x值的索引
arr.findIndex(function(x,i,arr){
if(x<2){console.log(x,i,arr)}
})//结果:1 0 [1, 2, 234, "sdf", -2],-2 4 [1, 2, 234, "sdf", -2]
元素包含检查:includes方法
findIndex方法与find类似,区别在于它默认返回的是第一个符合条件元素的索引值,而非元素本身。
includes方法的参数说明
let arr=[1,2,234,'sdf',-2];
arr.includes(2);// 结果true,返回布尔值
arr.includes(20);// 结果:false,返回布尔值
arr.includes(2,3)//结果:false,返回布尔值
includes函数的行为与字符串中的includes方法一致,接收两个参数:要查询的项以及查询的起始位置。
数组遍历方法:keys、values与entries
keys方法的遍历功能
let arr=[1,2,234,'sdf',-2];
for(let a of arr.keys()){
console.log(a)
}//结果:0,1,2,3,4 遍历了数组arr的索引
keys方法用于对数组的索引进行遍历。
values方法的遍历功能
let arr=[1,2,234,'sdf',-2];
for(let a of arr.values()){
console.log(a)
}//结果:1,2,234,sdf,-2 遍历了数组arr的值
values方法用于对数组的项(值)进行遍历。
entries方法的遍历功能
let arr=['w','b'];
for(let a of arr.entries()){
console.log(a)
}//结果:[0,w],[1,b]
for(let [i,v] of arr.entries()){
console.log(i,v)
}//结果:0 w,1 b
entries方法用于对数组的键值对进行遍历。
数组内容填充:fill方法
fill方法的修改特性
let arr=['w','b'];
arr.fill('i')//结果:['i','i'],改变原数组
arr.fill('o',1)//结果:['i','o']改变原数组,第二个参数表示填充起始位置
new Array(3).fill('k').fill('r',1,2)//结果:['k','r','k'],第三个数组表示填充的结束位置
fill方法会直接改变原数组。当指定的第三个参数(结束位置)大于数组长度时,填充操作以数组最后一位为结束位置。
数组构造方法:Array.of与Array.from
Array.of()方法的返回值特性
Array.of('w','i','r')//["w", "i", "r"]返回数组
Array.of(['w','o'])//[['w','o']]返回嵌套数组
Array.of(undefined)//[undefined]依然返回数组
Array.of()//[]返回一个空数组
Array.of()方法始终返回一个数组实例。该方法对参数类型不敏感,仅关注参数数量;若参数数量为0,则返回一个空数组。
数组内部拷贝:copyWithin方法
copyWithin方法的参数定义
["w", "i", "r"].copyWithin(0)//此时数组不变
["w", "i", "r"].copyWithin(1)//["w", "w", "i"],数组从位置1开始被原数组覆盖,只有1之前的项0保持不变
["w", "i", "r","b"].copyWithin(1,2)//["w", "r", "b", "b"],索引2到最后的r,b两项分别替换到原数组1开始的各项,当数量不够,变终止
["w", "i", "r",'b'].copyWithin(1,2,3)//["w", "r", "r", "b"],强第1项的i替换为第2项的r
copyWithin方法接收三个参数:被替换数据的起始位置、替换块的起始位置以及替换块的结束位置(不包含);调用形式为copyWithin(s, m, n)。
Array.from()方法的转换功能
Array.from({'0':'w','1':'b',length:2})//["w", "b"],返回数组的长度取决于对象中的length,故此项必须有!
Array.from({'0':'w','1':'b',length:4})//["w", "b", undefined, undefined],数组后2项没有属性去赋值,故undefined
Array.from({'0':'w','1':'b',length:1})//["w"],length小于key的数目,按序添加数组
let divs=document.getElementsByTagName('div');
Array.from(divs)//返回div元素数组
Array.from('wbiokr')//["w", "b", "i", "o", "k", "r"]
Array.from([1,2,3],function(x){
return x+1})//[2, 3, 4],第二个参数为回调函数
Array.from可将具有length属性的类数组对象转换为真正的数组,也可将字符串等可遍历对象转换为数组。该方法接收两个参数:待转换的对象以及可选的回调函数。
相关资源与总结
如需了解更多ECMAScript 6相关内容,可参考本站的《ECMAScript6(ES6)入门教程》、《JavaScript数组操作技巧总结》、《JavaScript字符与字符串操作技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript错误与调试技巧总结》及《javascript面向对象入门教程》。
希望本文关于ES6数组方法的介绍能对基于ECMAScript的程序设计工作有所帮助。
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
