千家信息网

javascript es6数组方法是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"javascript es6数组方法是什么",在日常操作中,相信很多人在javascript es6数组方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2026年11月02日javascript es6数组方法是什么

这篇文章主要介绍"javascript es6数组方法是什么",在日常操作中,相信很多人在javascript es6数组方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"javascript es6数组方法是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

es6数组方法:1、map方法;2、find方法;3、findIndex方法;4、filter方法;5、every方法;6、some方法;7、reduce方法;8、reduceRight方法;9、foreach方法;10、keys方法等等。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

数组是相同数据类型的数据按一定顺序排列的集合。在ES6(ECMAScript 6)新版本JavaScript语言标准中,ES6给数组添加了一些新特性,而这些新特性扩展了数组处理数据的能力,面对大数据集合往往不需循环操作即可完成累加、筛选、转换等工作。在本文将总结有关于ES6给数组提供一些新特性的使用方法。

1、map方法

通过制定方法处理数组中的每一个元素,并返回处理后的数组。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.map((currentValue,index,arr) => {    console.log("当前元素"+currentValue);  console.log("当前索引"+index);    if (currentValue>20) {        return currentValue-10;    } else {        return currentValue-5;    }})console.log(arr1)//另一种形式let nums = [1, 2, 3];let obj = {val: 5};let newNums = nums.map(function(item,index,array) {return item + index + array[index] + this.val;//对第一个元素,1 + 0 + 1 + 5 = 7//对第二个元素,2 + 1 + 2 + 5 = 10//对第三个元素,3 + 2 + 3 + 5 = 13}, obj);console.log(newNums);//[7, 10, 13]

2、find和findIndex方法

检索数组中的元素,find方法返回第一个符合要求的元素,findIndex方法返回第一个符合要求的元素下标。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.find((currentValue, index) => {    return currentValue>20;})var arr2 = arr.findIndex((currentValue, index) => {    return currentValue>20;})console.log(arr,arr1,arr2);//数组元素为对象var allPeple = [    {name: '小王', id: 14},    {name: '大王', id: 41},    {name: '老王', id: 61}]var PId = 14; //假如这个是要找的人的IDvar myTeamArr = [{name: '小王',   id: 14}]function testFunc(item){return item.id == PId ;}//判断myteam里是不是有这个人,如果==-1 代表没有,在allPeople中找到他,添加入我的队伍myTeamArr.findIndex(testFunc) == -1    ? myTeamArr.push(allPeple.find(testFunc))     : console.log('已存在该人员');//检索满足条件的对象var stu = [    {name: '张三', gender: '男', age: 20},    {name: '王小毛', gender: '男', age: 20},    {name: '李四', gender: '男', age: 20}]var obj = stu.find((element) => (element.name == '李四'))console.log(obj);console.log(obj.name);[1,2,3].findIndex(function(x) {x == 2;});// Returns an index value of 1.[1,2,3].findIndex(x => x == 4);// Returns an index value of -1

3、filter方法

检索数组中的元素,并以数组的形式返回所有符合要求的元素。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.filter((currentValue, index) => {    return currentValue>20;})console.log(arr,arr1);//逻辑属性的筛选var arr = [  { id: 1, text: 'aa', done: true },  { id: 2, text: 'bb', done: false }]console.log(arr.filter(item => item.done))// 保留奇数项let nums = [1, 2, 3];let oddNums = nums.filter(item => item % 2);console.log(oddNums);

4、every方法

检测数组中的每一个元素是否符合条件,是则返回true,否则是false。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.every((currentValue, index) => {    return currentValue>20;})console.log(arr,arr1);

5、some方法

检测数组中是否符合条件的元素,有则返回true,否则是false。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.some((currentValue, index) => {    return currentValue>20;})console.log(arr,arr1);

6、reduce和reduceRight方法

接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。reduce接受一个函数,函数有四个参数,分别是:上一次的值previousValue,当前值currentValue,当前值的索引index,数组array。

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

reduceRight()首次调用回调函数callbackfn时,prevValue 和 curValue 可以是两个值之一。如果调用 reduceRight() 时提供了 initialValue 参数,则 prevValue 等于 initialValue,curValue 等于数组中的最后一个值。如果没有提供 initialValue 参数,则 prevValue 等于数组最后一个值, curValue 等于数组中倒数第二个值。

console.clear();var arr = [0,1,2,3,4];var total = arr.reduce((a, b) => a + b); //10console.log(total);var sum = arr.reduce(function(previousValue, currentValue, index, array){  console.log(previousValue, currentValue, index);  return previousValue + currentValue;});console.log(sum);//第二个参数为5,第一次调用的previousValue的值就用传入的第二个参数代替var sum1 = arr.reduce(function(previousValue, currentValue, index){  console.log(previousValue, currentValue, index);  return previousValue + currentValue;},5);console.log(sum1);var sum2 = arr.reduceRight(function (preValue,curValue,index) {    return preValue + curValue;}); // 10var sum3 = arr.reduceRight(function (preValue,curValue,index) {    return preValue + curValue;}, 5); // 15//计算数组arr的平方和var arr1 = arr.map((oVal) => {return oVal*oVal;}) console.log(arr1);var total1 = arr1.reduce((a, b) => a + b); //30console.log(total1);//计算指定数组和let nums = [1, 2, 3, 4, 5];// 多个数的累加let newNums = nums.reduce(function(preSum,curVal,array) {return preSum + curVal;}, 0);console.log(newNums)//15

7、foreach方法

循环遍历数组的元素,作用相当于for循环,无返回值。

console.clear();var arr = [12,14,34,22,18];var arr1 = arr.forEach((currentValue, index) => {    console.log(currentValue, index);})

8、keys,values,entries方法

ES6 提供三个新的方法,entries(),keys()和values(),用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

console.clear();for (let index of ['a', 'b'].keys()) {console.log(index);}// 0// 1for (let elem of ['a', 'b'].values()) {console.log(elem);}// 'a'// 'b'for (let [index, elem] of ['a', 'b'].entries()) {console.log(index, elem);}// 0 "a"// 1 "b"

9、Array.from静态方法

Array.from()方法主要用于将两类对象(类似数组的对象[array-like object]和可遍历对象[iterable])转为真正的数组。

console.clear();//类似数组的对象转为真正的数组let arrayLike = {'0': 'a','1': 'b','2': 'c',length: 3}console.log(Array.from(arrayLike)); // ["a","b","c"]//字符转数组let arr = Array.from('w3cplus.com')  //字符转数组console.log(arr); // ["w","3","c","p","l","u","s",".","c","o","m"]//Set数据转数组let namesSet = new Set(['a', 'b'])  //new Set创建无重复元素数组let arr2 = Array.from(namesSet);  //将Set结构数据转为数组console.log(arr2); //["a","b"]//转换Map数据let m = new Map([[1, 2], [2, 4], [4, 8]]);console.log(Array.from(m)); // [[1, 2], [2, 4], [4, 8]]//接受第二个参数为map转换参数var arr = Array.from([1, 2, 3]);  //返回一个原样的新数组var arr1 = Array.from(arr, (x) => x * x)console.log(arr1);    // [1, 4, 9]var arr2 = Array.from(arr, x => x * x);console.log(arr2);    // [1, 4, 9]var arr3 = Array.from(arr).map(x => x * x);console.log(arr3);    // [1, 4, 9]//大样本生成var arr4 = Array.from({length:5}, (v, i) => i);console.log(arr4);  // [0, 1, 2, 3, 4]//第三个参数为diObj对象,map函数中this指向该对象//该功能实现由对象自带方法转换数据let diObj = {  handle: function(n){    return n + 2  }}console.log(Array.from(  [1, 2, 3, 4, 5],   function (x){return this.handle(x)},  diObj))  //[3, 4, 5, 6, 7]

10、copyWidthin方法

copyWidthin方法可以在当前数组内部,将指定位置的数组项复制到其他位置(会覆盖原数组项),然后返回当前数组。使用copyWidthin方法会修改当前数组。

copyWidthin将会接受三个参数[.copyWithin(target, start = 0, end = this.length)]:

  • target: 这个参数是必须的,从该位置开始替换数组项

  • start: 这是一个可选参数,从该位置开始读取数组项,默认为0,如果为负值,表示从数组的右边向左开始读取

  • end: 这是一个可选参数,到该位置停止读取的数组项,默认等于Array.length。如果为负值,表示倒数

console.clear();var arr = [1, 2, 3, 4, 5];//从下标3开始提取2个(5-3=2)元素到下标0var arr = arr.copyWithin(0, 3, 5);  console.log(arr);

11、fill方法

fill方法使用给定的值填充一个数组。这种方法用于空数组的初始化非常方便。数组中已有的元素会全部被抹去。

fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。

console.clear();var arr = ['a', 'b', 'c',,,];arr.fill(0, 2, 5);console.log(arr);  // ["a", "b", 0, 0, 0]arr.fill(0, 2);console.log(arr);  // ["a", "b", 0, 0, 0]arr = new Array(5).fill(0, 0, 3);console.log(arr);  // [0, 0, 0, empty × 2]arr = new Array(5).fill(0, 0, 5);console.log(arr);  // [0, 0, 0, 0, 0]console.log(new Array(3).fill({}));  //[{…}, {…}, {…}]console.log(new Array(3).fill(1));   //[1, 1, 1]

12、Set数组对象用法

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

console.clear();var s = new Set();[2,3,5,4,5,2,2].forEach(x => s.add(x));console.log(s);  //{2, 3, 5, 4}for(let i of s) {console.log(i);}  //Set对象循环var set = new Set([1,2,3,4,4]);//符号"..."将一个数组转为用逗号分隔的参数序列console.log([...set]);  //[1, 2, 3, 4]var items = new Set([1,2,3,4,5,5,5,5,]);console.log(items.size);  //5,元素个数// add添加元素var set = new Set();set.add("a");set.add("b");console.log(set); //{"a", "b"}var s = new Set();s.add(1).add(2).add(2);  //链式添加console.log(s.size);console.log(s.has(1));  //has判断元素1是否存在console.log(s.has(2));  //trueconsole.log(s.has(3));  //falses.delete(2);  //删除第2个元素console.log(s.has(2));  //false// set转数组var items = new Set([1,2,3,4,5]);var array = Array.from(items);console.log(array);  //[1, 2, 3, 4, 5]// 数组的 map 和 filter 方法也可以间接用于Setvar s = new Set([1,2,3]);s = new Set([...s].map(x => x * 2));console.log(s);  //{2, 4, 6}s = new Set([...s].filter(x => (x % 3) ==0));console.log(s);  //6,被3整除// 实现并集、交集、差集var a = new Set([1,2,3]);var b = new Set([4,3,2]);//并集 var union = new Set([...a, ...b]);console.log(union);//交集 var intersect = new Set([...a].filter(x => b.has(x)));console.log(intersect);//差集 var difference = new Set([...a].filter(x => !b.has(x)));console.log(difference);//遍历数据同步改变原来的Set结构// 利用原Set结构映射出一个新的结构var set1 = new Set([1,2,3]);set1 = new Set([...set1].map(val => val *2));console.log(set1);// 利用Array.fromvar set2 = new Set([1,2,3]);set2 = new Set(Array.from(set2, val => val * 2));console.log(set2);

13、Map数组对象用

Map对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值) 都可以作为一个键或一个值。Map作为一组键值对结构,具有极快的查找速度。

console.clear();var names = ['Michael', 'Bob', 'Tracy'];var scores = [95, 75, 85];//Map键值对的结构var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);console.log(m.get('Michael')); // 95//初始化Map需要的二维数组var m = new Map(); // 空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);console.log(m.has('Adam')); // 是否存在key 'Adam': truem.get('Adam'); // 67m.delete('Adam'); // 删除key 'Adam'console.log(m.get('Adam')); // undefined//key相同时,后面的值会把前面的值冲掉var m = new Map();m.set('Adam', 67);m.set('Adam', 88);console.log(m.get('Adam')) // 88

ES6新版本JavaScript语言给数组添加了许多面向大数据处理的新功能,使得JS在数据处理量和速度方面有了质的提升。需要提示的是,当我们处理的数据量较大时,建议使用Google Chrome浏览器。ES6数组+Chrome浏览器,使得JS在数据处理功能产生变革,完全可以媲美Python或R语言等数据处理软件。

提示:本页中JS脚本代码可复制粘贴到JS代码运行窗口调试体验; 文本编辑快捷键:Ctrl+A - 全选;Ctrl+C - 复制; Ctrl+X - 剪切;Ctrl+V - 粘贴

到此,关于"javascript es6数组方法是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数组 方法 元素 对象 数据 参数 处理 位置 结构 三个 函数 循环 学习 下标 数据处理 条件 特性 语言 检索 原始 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网 互联网科技活动banner 互联网 科技创新 深圳互联网络科技有限公司 广州宏创互联网科技 北京互联网络科技有限公司 银优互联网科技有限公司 深圳卡尔迅互联网科技有限公司怎么样 华脉科技工业互联网产品 中国的互联网科技企业的崛起 汽车互联网创新科技园 荆州市昕露互联网络科技有限公司 千方科技属于互联网企业吗 成都互联网科技公司工作好不好 速维有品互联网信息科技(苏州)有限公司 河南住房之家互联网科技 洛阳共同富裕互联网科技有限公司 中和天地互联网科技有限公司 郑州欣桑互联网科技有限公司 承德科技产业互联网平台 广东万易互联网科技有限公司惠州分公司 新华互联网科技学校 迪茉互联网科技 鑫亿盛互联网科技 中国互联网有什么科技含量 互联网为啥属于高科技 恒生互联网科技指数跳水 广州梦谷互联网科技有限公司领导 互联网科技机房 互联网科技对化妆品行业
0