ECMAScript6——数组操作方法_总结篇

2023-05-16

ES6 -> 数组的方法 (加粗为ES6新增的方法)

1. pop -删除数组的最后一个元素,把数组的长度减1,并且返回它被删除元素的值,如果数组变为空,则该方法不改变数组,返回undefine值;
let arr1 = [1,2,3];

arr1.pop();
console.log(arr1); //[1,2]

let arr1Item_1=arr1.pop();
console.log(arr1Item_1)//2
console.log(arr1); //[1]

let arr1Item_2=arr1.pop();
console.log(arr1Item_2)//1
console.log(arr1); //[]

let arr1Item_3=arr1.pop();
console.log(arr1Item_3)//undefined
console.log(arr1); //[]

复制代码
2. push -方法是向数组末尾添加一个或者多个元素,并返回新的长度;
let arr2=[1,2];
arr2.push(3);
console.log(arr2); //[1,2,3]

复制代码
3. shift -把数组的第一个元素从其中删除,并返回被删除的值。如果数组是空的,shift()方法将不进行任何操作,返回undefined的值;
let arr3=[1,2,3];
arr3.shift();
console.log(arr3); //[2,3]

复制代码
4. unshift -向数组的开头添加一个或多个元素,并且返回新的长度;
let arr4=[1,2];
arr4.unshift(3);
console.log(arr4); //[3, 1, 2]

复制代码
5. indexof - 查找某个元素的位置,存在则返回元素的位置,否则返回-1;
let arr5 = ['a', NaN]
console.log(arr5.indexOf('a')) //0
console.log(arr5.indexOf('b')) //-1
console.log(arr5.indexOf(NaN)) //-1

缺点:
1. 第一个是它会返回-1和元素的位置来表示是否包含,在定位方面是没问题,就是不够语义化
2.不能判断是否有NaN的元素

复制代码
6. slice -返回选定元素的新数组
let arr6=[1,2,3];
console.log(arr6.slice(1)); //[2,3]

复制代码
7. lastIndexOf -从右向左查某个指定的字符串在字符串中最后一次出现的位置
let arr7=[1,2,3];
console.log(arr7.lastIndexOf('2')); //1

注意:
lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数数和计算的,所以结果和indexOf()方法返回的相同

复制代码
8. reverse -颠倒数组中元素的顺序
let arr8=[1,2,3];
console.log(arr8.reverse()); //[3,2,1]

复制代码
9. sort -对数组的元素进行排序
let arr9=[3,1,2,11,23,111];
console.log(arr9.sort()); //[1, 11, 111, 2, 23, 3]
console.log(arr9.sort(
    function(a,b){
        return a-b;
    }
)); // [1, 2, 3, 11, 23, 111]
console.log(arr9.sort(
    function(a,b){
        return b-a;
    }
)); // [111, 23, 11, 3, 2, 1]

复制代码
10. join -把数组中的所有元素放入一个字符串
let arr10=[1,2,3];
console.log(arr10.join("_")); //1_2_3

复制代码
11. map -遍历数组,返回一个新数组,不改变原数组
let arr11=[1, 2, 3, 4, 5, 6]
let newArr11 = arr11.map(function (item, index) {
    return item*2
});
console.log(newArr11) //[2, 4, 6, 8, 10, 12]

复制代码
12. forEach -会遍历数组, 循环体内没有返回值,循环不会改变原来数组的内容
let arr12 = [1, 2, 3, 4];
arr12.forEach((item, index, arr) => { // 第一个参数是当前元素, 第二个参数是当前元素的索引, 第三个参数是当前元素所属的数组
    console.log(item); //[1, 2, 3, 4]
});

复制代码
13. filter -返回新数组,数组内是所有满足条件的元素;如果条件不满足,filter()返回的是一个空数组;
let arr13 = [1,2,3,4,5,6]
let newArr13 = arr13.filter(function (item, index) {
    return item>2;
});
console.log(newArr13); //[3, 4, 5, 6]

复制代码
14. for of -循环迭代可迭代的对象(Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等)
//Arrays(数组)
const arr14_1 = ['1', '2', '3'];
for (const value of arr14_1) {
  console.log(value); //1,2,3
}

//Maps(映射)
const arr14_2 = new Map([['one', 1], ['two', 2]]);
for (const [key, value] of iterable) {
    console.log(`Key: ${key} and Value: ${value}`);
    // Key: one and Value: 1
    // Key: two and Value: 2
}

//Set(集合)
const arr14_3 = new Set([1, 1, 2, 2, 1]);
for (const value of arr14_3) {
    console.log(value); 
    // 1
    // 2
}

//String(字符串)
const arr14_4 = 'javascript';
for (const value of arr14_4) {
    console.log(value);
    // "j"
    // "a"
    // "v"
    // "a"
    // "s"
    // "c"
    // "r"
    // "i"
    // "p"
    // "t"
}

复制代码
15. splice -向从数组中添加/删除项目,然后返回被添加/删除的项目(在原数组上操作)
let arr15_1=[1,2,3,4,5];
console.log(arr15_1.splice(2,0,6)); //[1, 2, 6, 3, 4, 5]
console.log(arr15_1.splice(2,1,7)); //[1, 2, 7, 3, 4, 5]
console.log(arr15_1.splice(2,2,8)); //[1, 2, 8, 4, 5]
复制代码
16. includes (包含) -判断是否包含某一元素,返回的是boolean类型
let arr16 = [1, 2, 33, NaN]
console.log(arr16.includes(1)) //true
console.log(arr16.includes(NaN)) //true
console.log(arr16.includes(3)) //false

参数:
includes()函数的第二个参数表示判断的起始位置。如果第二个参数是负数,表示从右数过来第几个,但是不改变判断搜索的方向,搜索方向还是从左到右。

console.log(arr16.includes(1),1) //false
console.log(arr16.includes(2),-1) //false

优点:
1.解决了indexOf的上述的两个问题:它直接返回true或者false表示是否包含元素;对NaN一样能有有效。

缺点:
1.不能定位

复制代码
17. concat -连接两个或多个数组
let arr17_1 = [1, 2, 3, 4, 5]
let arr17_2 = [6, 7, 8, 9, 10]
console.log(arr17_1.concat(arr17_2)) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

复制代码
18. some -只要其中一个为true 就会返回true(一真即真)
let arr18 = [1, 2, 3];
let flag18 = arr18.some(function (item,index) {
        return item>1;
    });
console.log(flag18)// true

复制代码
19. every -必须所有都返回true才会返回true(一假即假)
let arr19 = [1, 2, 3];
let flag19 = arr19.every(function (item,index) {
        return item>1;
    });
console.log(flag19) //false

复制代码
20. reduce -让数组的前后两项进行某种计算,然后返回其值,并继续计算,不改变原数组,返回计算的最终结果,从数组的第二项开始遍历。
let arr20 = [{price:20,count:1},{price:39,count:2},{price:56,count:5},{price:56,count:5}];
let r20 = arr20.reduce(function (prev,next,index) {
    return prev+next.price*next.count;
},0); //在第二个参数上指定第一次的prev
console.log(r20);//658

参数:arr.reduce(callback[, initialValue])

第一个参数:callback (回调函数其包含四个参数)
1).代表的是数组的第一项 prev, 后面返回的就是每次迭代后返回的结果
2).当前项 next
3).当前项的索引
4).原数组

第二个参数:[, initialValue] :数组当前处理的值(指定第一次的prev)

复制代码
21. find -查找第一个符合条件的数组元素,如果找不到则返回undefined
let arr21 = [1, 2, 3];
let obj21 = arr21.find(function (item, index) {
    return item > 1;
});
console.log(obj21); // 2

复制代码

转载于:https://juejin.im/post/5ceb45d76fb9a07ebd48b3c6

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ECMAScript6——数组操作方法_总结篇 的相关文章

  • 避免在 ES6 的函数内定位 this 的对象作用域

    例如 我正在使用 D3 js 运行一个项目 导入特定模块并调用它们的函数 Setup TypeScript ES6 导入特定的 D3 组件 角6 我有一个对象 在本例中是一个角度指令 并在 SVG 画布上绘制一些圆圈 并希望它们在拖动事件上
  • ReactCSSTransitionGroup 组件WillLeave 未调用

    我尝试使用 ReactCssTransition 但不知何故该事件没有被调用 componentWillLeave 这是我的组件 import React Component from react import TransitionGrou
  • 代理递归函数

    想象一个简单的递归函数 我们试图包装它以检测输入和输出 A simple recursive function const count n gt n 1 count n 1 Wrap a function in a proxy to ins
  • JavaScript 符号并不能阻止对象中的名称冲突

    我已经开始研究 JavaScript 中的符号 并开始在我的对象中使用它们来帮助解决名称冲突 但是在使用它们时我仍然可以覆盖属性吗 我很难理解 JavaScript 中符号的意义 它们被谈论了很多 人们说它们很聪明 因为它们不会导致对象中的
  • 使用 ES6 `import` 语法时出现“无法解析符号”

    Here http www qimingweng com react modal dialog 给出了如何从模块导入某些类的示例 import ModalContainer ModalDialog from react modal dial
  • 意外标记:使用映射形成对象数组[重复]

    这个问题在这里已经有答案了 我想制作这个 name james age 10 name john age 12 name johnny age 56 我的下面的代码失败了 得到了预期的令牌吗 let x name james age 10
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • ES6 类文字中的 IIFE

    在 ES5 中我们都可以这样做 myClass prototype myMethod function return function 我可以对 ES6 类文字执行同样的操作吗 不 至少现在还没有 ES6 类仅支持声明方法 因此任何不直接为
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • Javascript 中 Object.entries 的数组解构

    这是有问题的代码 const posts data id 1 date 2019 02 03 ev filter 1 art foodie ev filter 2 value1 value2 ev filter 3 value1 value
  • 为什么我的箭头函数有原型属性?

    正如文档中提到的https developer mozilla org en docs Web JavaScript Reference Functions Arrow functions https developer mozilla o
  • 类型错误:未定义不是对象(评估“store.getState”)

    我正在关注让我们构建 使用 React Native Redux 的加密货币原生移动应用程序 https medium com react native training bitcoin ripple ethereum price chec
  • ES6/ECMAScript6 解构是否会创建新变量?

    如您所知 我们通过解构来使用 ES6 对象中的值 我想知道它的深度 当我编写下面的代码时 let or const firstVar secondVar this props 它是在内存中分配新空间还是像指针一样使用这些值 以前我写的时候
  • 如何在 ECMAScript 6 中导入 JSON 文件?

    如何访问 ECMAScript 6 中的 JSON 文件 以下不起作用 import config from config json 如果我尝试导入 JavaScript 文件 这可以正常工作 https www stefanjudis c
  • 如何在 ES6 类中使用静态变量?

    我正在尝试在 es6 中使用静态变量 我想声明一个静态变量count in Animal类并增加它 但是 我无法通过声明静态变量static count 0 所以我尝试了另一种方法 class Animal constructor this
  • 在 ES6 中使用 import 和 require 的正确方法是什么?

    关于 import 和 require 及其差异有多个问题 像这些 JavaScript 中的 import 和 require 有什么区别 https stackoverflow com questions 51373933 what i
  • 用户定义的和谐集合的对象相等性(es6)

    我遇到一个问题 我正在生成许多值 并且需要确保我只使用唯一的值 由于我使用的是带有 harmony 标志的 Node js 并且可以访问 Harmony 集合 因此我决定 Set 可能是一个选项 我正在寻找类似于以下示例的内容 use st
  • Babel NodeJS ES6:语法错误:意外的令牌导出

    我正在尝试使用 babel 来运行我的 NodeJS 程序 其中包括 ES6 语法和 Colyseus 库的导出 但是 当我运行命令时 babel node server js 出现以下错误消息 export class MyRoom ex
  • Map对象,在单个循环中删除元素

    在某些条件下 在单个循环中删除 Map 对象的元素的简洁有效的方法是什么 迭代地图的条目 可以做到这一点 但在每次迭代时调用条目 看起来效率不高 let name value map new Map One 1 Two 2 Three 3
  • 仅当对象为真时才解构对象

    假设我想像这样解构我的函数参数 const func field subField gt subField 如果字段是 如何防止抛出错误undefined or null 您可以使用默认值 const func field subField

随机推荐

  • linux zip

    zip r myfile zip 将当前目录下的所有文件和文件夹全部压缩成myfile zip文件 xff0d r表示递归压缩子目录下所有文件 2 unzip unzip o d home sunny myfile zip 把myfile
  • Eclipse中文注释乱码解决

    将别人的项目或JAVA文件导入到自己的Eclipse中时 xff0c 常常会出现JAVA文件的中文注释变成乱码的情况 xff0c 主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同 总结网上的建议和自己的体会 xff0c 可
  • H3C子接口配置要点及实例说明

    xfeff xfeff 类型一 xff1a 以太网子接口配置要点 单臂路由 第一步 xff1a 在路由器对端的交换机上配置好vlan信息 xff08 如vlan10 vlan20 xff09 第二步 xff1a 将交换机上与路由器直接相连的
  • 常用的SQL聚合函数:

    AVG 返回集合的平均值 COUNT 返回集合中的项目数 MAX 返回集合中的最大值 MIN 返回集合中的最小值 SUM 返回集合中所有或不同值的总和 GROUP BY 将结果按照指定的列进行分组 HAVING 过滤分组后的结果 聚合函数不
  • int型除以int型

    int型除以int型得到的还是int型 就算你是这样的 xff1a float a 61 5 3 xff0c 虽然你定义的a是float型 xff0c 但a得到的结果依旧是1 0000而不是1 66666 5 3先得到1 xff0c 然后再
  • Keepalived两节点出现双VIP情况及解决方法【原创】

    1 故障现象 俩台服务器keepalived的vip在俩台服务器同时出现 A xff1a 10 70 12 72 B xff1a 10 70 12 73 2 问题分析 1 xff09 先分析那台服务器在提供服务 A xff1a 10 70
  • 10款值得推荐的论坛系统源码

    无论您是一个技术娴熟的站长朋友 xff0c 还是初入互联网并致力于在这片领土发展的准站长 xff0c 或者您只是一个还未毕业的学生 xff0c 在为了毕业设计 课程设计不停的搜集资料 xff0c 只要您需要的是社区论坛系统的源码 xff0c
  • make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] 错误 2 解决方法...

    make 2 storage perfschema unittest pfs connect attr t 错误 1 make 1 storage perfschema unittest CMakeFiles pfs connect att
  • Yii2 中cookie的用法(1)

    Yii使用 yii web Cookie对象来代表每个cookie xff0c yii web Request 和 yii web Response 通过名为 cookies 的属性维护一个cookie集合 xff0c 前者的cookie
  • 修改.srt格式字幕文件

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 正文前 xff1a 20160821104107 下载了 惊天魔盗团2 电影来看 xff0c 发现字幕只有英文没有中文 打开 srt文件 xff0c 随便改了一下 xff0
  • VC6.0+MSDN 下载(含链接)安装 全教程

    Microsoft Visual Studio 6 0 简体中文企业版 下载路径显示不出 xff0c 这个软件比较好下载 xff0c 主要是MSDN MSDN CD1 http ftp sdshiyan cn soft program DN
  • Dynamic Drop Down(Translate Values)

    This code i have got Ittool box com It is very usefull we usually have requirement when we want to hide some translate v
  • Windbg实用手册

    摘要 Windbg的命令分为标准命令 xff0c 原命令和扩展命令 xff0c 输入问号 可以显示所有的标准命令的帮助信息 元命令以一个点 开始 xff0c 输入 help可以显示所有的原命令的帮助信息 扩展命令以叹号 开始 阅读全文 Ri
  • Spring注解@Component、@Repository、@Service、@Controller区别 .

    Spring 2 5 中除了提供 64 Component 注释外 xff0c 还定义了几个拥有特殊语义的注释 xff0c 它们分别是 xff1a 64 Repository 64 Service 和 64 Controller 在目前的
  • sql 语句中如何写判断

    当ID为26时 xff0c 查询的result是ok span class token keyword select span name span class token punctuation span span class token
  • 光流定位原理是什么??【转】

    转自 xff1a https www zhihu com question 35980316 Jessie Lee HIT 控制 无人机 光流是测速算法 xff0c 并不是直接定位的 简单理解 xff0c 光流就是通过检测图像中光点和暗点的
  • 算法杂货铺——分类算法之决策树(Decision tree)

    3 1 摘要 在前面两篇文章中 xff0c 分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法 这两种算法都以贝叶斯定理为基础 xff0c 可以对分类及决策问题进行概率推断 在这一篇文章中 xff0c 将讨论另一种被广泛使用的分类算法
  • 01-嵌入式入门-如何看原理图

    最近由于找到的工作是偏于嵌入式方向 xff0c 因此又重新开始学习已经丢弃两年的知识 新手学习知识感觉有一个通病 xff1a 喜欢收集各种各样的视频 资料 xff0c 网盘里收藏一大堆 xff0c 但是却从没有打开看过 xff0c 到头来还
  • MAVLink v1.0详解——结构

    本文针对 MAVLink v1 0版本 xff0c 协议版本 xff1a 3 MAVLink是为微型飞行器MAV xff08 Micro Air Vehicle xff09 设计的 xff08 LGPL xff09 开源的通讯协议 是无人飞
  • ECMAScript6——数组操作方法_总结篇

    ES6 gt 数组的方法 加粗为ES6新增的方法 1 pop 删除数组的最后一个元素 xff0c 把数组的长度减1 xff0c 并且返回它被删除元素的值 xff0c 如果数组变为空 xff0c 则该方法不改变数组 xff0c 返回undef