千家信息网

javascript es6数组方法是什么

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"javascript es6数组方法是什么",在日常操作中,相信很多人在javascript es6数组方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2025年01月19日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安全错误 数据库的锁怎样保障安全 汕头安卓软件开发订制 view怎么恢复数据库 如何撤销服务器主板原来的设置 数据安全数据库防火墙 武汉铂嵘软件开发有限公司 福建机架式服务器多少钱 网络安全课进校园300字以上 加拿大电信网络安全 kvm远程管理服务器 软件开发应该怎么样分组 网络安全手抄报的小装饰 护苗网络安全知识进课堂笔记 网络技术力量简介 建筑生存服务器作品展示 阿里数据库兼容oracle吗 杭州墨壹网络技术有限公司 防城港在线网络技术有限公司招聘 南京网络安全警察电话 方舟生存进化私人服务器要买吗 杭州r7525服务器供应 数据安全数据库防火墙 拼宝商城软件开发 数据库描述安全级别划分指标 中学生网络安全与宪法 flask连接数据库 无盘服务器详细教程 计算机软件开发软件分类 网络安全公司人均毛利 强化舆情处置筑牢网络安全 源码网络技术有限公司怎么样
0