ES5 和 ES6 数组的操作方法

在 JavaScript 中,数组的操作方法非常丰富,包括 ES5 和 ES6 中引入的各种方法。以下是对这些数组方法的详细介绍,分为 ES5 和 ES6。

目录

一、ES5 数组方法

1. 创建数组

2. 数组增加元素

3. 数组删除元素

4. 查找元素

5. 遍历数组

6. 筛选数组

7. 数组排序和反转

8. 合并和分割

9. 其他方法

二、ES6 数组方法

1. 扩展运算符

2. Array.from()

3. Array.of()

4. Array.prototype.includes()

5. Array.prototype.find()

6. Array.prototype.findIndex()

7. Array.prototype.entries()

8. Array.prototype.keys()

9. Array.prototype.values()

10. Array.prototype.flat()

11. Array.prototype.flatMap()

 


一、ES5 数组方法

1. 创建数组
  • Array():使用构造函数创建数组。

    var array1 = new Array(); // 创建空数组
    var array2 = new Array(1, 2, 3); // 创建包含 1, 2, 3 的数组
    
  • []:使用数组字面量创建数组。

    var array3 = [1, 2, 3];
    
2. 数组增加元素
  • push(element1, element2, ...):向数组末尾添加一个或多个元素,返回新的长度。

    var fruits = ['apple', 'banana'];
    fruits.push('orange'); // ['apple', 'banana', 'orange']
    
  • unshift(element1, element2, ...):向数组开头添加一个或多个元素,返回新的长度。

    fruits.unshift('mango'); // ['mango', 'apple', 'banana', 'orange']
    
3. 数组删除元素
  • pop():移除数组末尾的元素,并返回该元素。

    var last = fruits.pop(); // 'orange'
    
  • shift():移除数组开头的元素,并返回该元素。

    var first = fruits.shift(); // 'mango'
    
4. 查找元素
  • indexOf(searchElement, fromIndex):返回数组中第一个匹配元素的索引,如果不存在则返回 -1。

    var index = fruits.indexOf('banana'); // 1
    
  • lastIndexOf(searchElement, fromIndex):返回数组中最后一个匹配元素的索引。

    var lastIndex = fruits.lastIndexOf('banana'); // 1
    
  • every(callback):测试数组的所有元素是否都通过指定函数的测试。

    var allLong = fruits.every(function(fruit) {return fruit.length > 5;
    });
    
  • some(callback):测试数组是否至少有一个元素通过指定函数的测试。

    var hasShort = fruits.some(function(fruit) {return fruit.length < 5;
    }); // true
    
5. 遍历数组
  • forEach(callback):对数组中的每个元素执行一次提供的回调函数。

    fruits.forEach(function(fruit) {console.log(fruit);
    });
    
  • map(callback):创建一个新数组,所有元素为回调函数的返回值。

    var lengths = fruits.map(function(fruit) {return fruit.length;
    }); // [5, 6, 6]
    
6. 筛选数组
  • filter(callback):创建一个新数组,包含所有通过测试的元素。
    var longFruits = fruits.filter(function(fruit) {return fruit.length > 5;
    }); // ['banana']
    
7. 数组排序和反转
  • sort(compareFunction):对数组元素进行排序。

    var numbers = [3, 1, 4, 2];
    numbers.sort(function(a, b) {return a - b; // 升序排列
    }); // [1, 2, 3, 4]
    
  • reverse():反转数组中的元素顺序。

    numbers.reverse(); // [4, 3, 2, 1]
    
8. 合并和分割
  • concat(array1, array2, ...):合并两个或多个数组,返回新数组。

    var moreFruits = ['grapes', 'kiwi'];
    var allFruits = fruits.concat(moreFruits); // ['banana', 'apple', 'grapes', 'kiwi']
    
  • slice(start, end):返回数组的指定部分,不修改原数组。

    var citrus = fruits.slice(1, 3); // ['apple', 'banana']
    
  • splice(start, deleteCount, item1, item2, ...):添加或删除元素,同时返回被删除的元素。

    var removed = fruits.splice(1, 1, 'lemon'); // 删除 'apple', 添加 'lemon'
    
9. 其他方法
  • join(separator):将数组的所有元素连接成一个字符串。

    var fruitString = fruits.join(', '); // 'banana, lemon'
    
  • reduce(callback, initialValue):对数组中的每个元素执行给定的 reducer 函数,并将其结果汇总为单个值。

    var total = [1, 2, 3, 4].reduce(function(acc, curr) {return acc + curr; // 10
    }, 0);
    

二、ES6 数组方法

ES6 引入了一些新的数组方法,增强了操作数组的能力。

1. 扩展运算符
  • ...:用于将一个数组展开为多个元素。
    var arr1 = [1, 2, 3];
    var arr2 = [4, 5, ...arr1]; // [4, 5, 1, 2, 3]
    
2. Array.from()
  • Array.from(arrayLike, mapFunction, thisArg):从类数组或可迭代对象创建一个新数组。
    var arrayLike = 'hello';
    var arr = Array.from(arrayLike); // ['h', 'e', 'l', 'l', 'o']
    
3. Array.of()
  • Array.of(element0, element1, ...):创建一个新数组实例,用于将一组元素转换为数组。
    var arr = Array.of(1, 2, 3); // [1, 2, 3]
    
4. Array.prototype.includes()
  • includes(value, fromIndex):判断数组是否包含某个值,返回 true 或 false
    var hasBanana = fruits.includes('banana'); // true
    
5. Array.prototype.find()
  • find(callback):返回数组中满足提供的测试函数的第一个元素的值,否则返回 undefined
    var found = fruits.find(function(fruit) {return fruit.length > 5; // 找到并返回第一个长度大于 5 的元素
    }); // 'banana'
    
6. Array.prototype.findIndex()
  • findIndex(callback):返回满足提供的测试函数的第一个元素的索引,未找到则返回 -1。
    var index = fruits.findIndex(function(fruit) {return fruit.length > 5;
    }); // 1
    
7. Array.prototype.entries()
  • entries():返回一个新的数组遍历器对象,包含数组中每个索引的键/值对。
    var iterator = fruits.entries();
    for (let [index, value] of iterator) {console.log(index, value);
    }
    
8. Array.prototype.keys()
  • keys():返回一个新的数组遍历器对象,包含数组中每个索引的键。
    var keys = fruits.keys();
    for (let key of keys) {console.log(key); // 0, 1, 2
    }
    
9. Array.prototype.values()
  • values():返回一个新的数组遍历器对象,包含数组中每个索引的值。
    var values = fruits.values();
    for (let value of values) {console.log(value);
    }
    
10. Array.prototype.flat()
  • flat(depth):返回一个新数组,递归地将子数组中的所有元素提取出来,默认深度为 1。
    var nestedArray = [1, [2, [3, 4]]];
    var flatArray = nestedArray.flat(2); // [1, 2, 3, 4]
    
11. Array.prototype.flatMap()
  • flatMap(callback):首先映射每个元素,然后将结果压缩成一个新数组。
    var nums = [1, 2, 3];
    var doubled = nums.flatMap(n => [n, n * 2]); // [1, 2, 2, 4, 3, 6]
    

总结

JavaScript 中的数组方法包括了 ES5 和 ES6 的丰富数组操作功能,使得数组的操作更加灵活和高效。掌握这些方法可以帮助开发者更轻松地处理数据和开发功能复杂的应用程序。如果你有具体的方法或使用场景问题,欢迎随时询问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙next版开发:订阅应用事件(ArkTS)

在HarmonyOS 5.0中&#xff0c;ArkTS提供了强大的应用事件订阅机制&#xff0c;允许开发者订阅和处理系统或应用级别的事件。这一功能对于监控应用行为、优化用户体验和进行性能分析至关重要。本文将详细介绍如何在ArkTS中订阅应用事件&#xff0c;并提供示例代码进行说明。 应…

【juc】AbstractQueuedSynchronized为什么采用双向链表

目录 1. 说明2. 双向链表的特性2.1 双向指针2.2 高效操作2.3 支持双向遍历 3. AQS的设计需求3.1 管理等待线程3.2 高效传播状态信息3.3 支持异常处理3.4 简化自旋竞争锁的逻辑 4. 单向链表的局限性4.1 遍历方向受限4.2 节点删除操作复杂4.3 状态信息传播不便 1. 说明 1.Abstra…

抽象工厂模式详解

1. 引言 1.1 设计模式概述 设计模式&#xff08;Design Patterns&#xff09;是软件开发中解决常见问题的一种最佳实践。它们通过总结经验&#xff0c;提供了一套被验证有效的代码结构和设计原则&#xff0c;帮助开发者提高代码的可维护性、可重用性和可扩展性。 设计模式主…

文献解读-DNAscope: High accuracy small variant calling using machine learning

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;DNAscope: High accuracy small variant calling using machine learning标题&#xff08;中文&#xff09;&#xff1a;DNAsc…

资产安全加固的面试点

资产加固 资产管理属于蓝队前期要做的事情&#xff0c;首先客户单位对他自身的单位资产有一定的了解哪些资产的优先级和重要程度等等&#xff0c;所以开始要做相关的资产梳理&#xff0c;对客户单位进行统计&#xff0c;梳理&#xff0c;分析&#xff0c;找到哪些点是可以授权…

自动驾驶3D目标检测综述(一)

文章地址&#xff1a;[2206.09474] 3D Object Detection for Autonomous Driving: A Comprehensive Survey (arxiv.org) 这篇综述简单易懂&#xff0c;非常合适对自动驾驶和3D目标检测感兴趣的小白阅读&#xff0c;对相关算法进行初步理解。 目录 一、摘要 &#xff08;一&a…

微软域名邮箱:如何设置管理烽火域名邮箱?

微软域名邮箱的设置技巧&#xff1f;免费域名邮箱注册设置教程&#xff1f; 微软域名邮箱为企业提供了一个强大且灵活的解决方案&#xff0c;帮助企业轻松管理其域名邮箱。烽火将详细介绍如何设置和管理微软域名邮箱&#xff0c;确保您的团队能够高效地使用这一工具。 微软域…

DirectShow过滤器开发-写AVI视频文件过滤器

下载本过滤器DLL 本过滤器将视频流和音频流写入AVI视频文件。 过滤器信息 过滤器名称&#xff1a;写AVI 过滤器GUID&#xff1a;{2EF49957-37DF-4356-A2A0-ECBC52D1984B} DLL注册函数名&#xff1a;DllRegisterServer 删除注册函数名&#xff1a;DllUnregisterServer 过滤器有…

算法——二分查找(leetcode704)

对于二分查找而言,首先我们得到的查找数组必须是一个有序数组,接着通过数组的两端得到左指针和右指针继而得到中间指针指向数组中间元素,将中间元素与目标值比较如果大于目标值舍弃数组中间元素右边的一半将右指针重置为中间指针下标-1中间指针重置为左右指针下标之和除以2&…

新版 idea 编写 idea 插件时,启动出现 ClassNotFound

IntelliJ IDEA 2024.1.6 (Ultimate Edition) Build #IU-241.19072.14, built on August 8, 2024 Licensed to Sophia Tout Subscription is active until June 29, 2025. For educational use only. Runtime version: 17.0.111-b1207.30 amd64 Kotlin: 241.19072.14-IJ 新版本…

Pytorch基本语法

Pytorch Pytorch的基本使用基本使用张量的简介1.张量的基本类型2.张量的创建1).基本创建方式1.torch.tensor()根据指定数据创建张量2.torch.Tensor() 根据指定形状创建张量&#xff0c;也可以用来创建指定数据的张量3.torch.IntTensor()、torch.FloatTensor()、torch.DoubleTen…

vue2.x elementui 固定顶部、左侧菜单与面包屑,自适应 iframe 页面布局

vue elementui 固定顶部、左侧菜单与面包屑&#xff0c;自适应 iframe 页面布局 疑问点&#xff1a;iframe无法高度100%&#xff0c;如果写了100%就会有滚动条&#xff0c;所以只写了99.5% 【效果图】 路由示例 const routes [{title: Index,path: /,name: "Index"…

单例模式全面解析

1. 引言 1.1 设计模式概述 设计模式&#xff08;Design Patterns&#xff09;是软件开发中总结的一套最佳实践&#xff0c;用于解决常见的软件设计问题。通过使用设计模式&#xff0c;开发者可以提高系统的可维护性、可扩展性和代码的复用性&#xff0c;简化开发流程和降低开…

godot——主题、Theme、StyleBox

我刚开始被这些术语吓到了&#xff0c;一直不敢去接触它们&#xff0c;都用的默认样式。现在好不容易有点思路了&#xff0c;记录下来。 下面看看怎么自定义样式。 1.先新建一个Theme 2.再次点击创建好的Theme 得到 图1 这样一个面板。&#xff08;看不懂没事&#xff0c;继…

web——sqliabs靶场——第二关

今天来搞第二关&#xff0c;来看看是什么咸蛋 1.判断是否存在sql注入漏洞 输入1 存在sql注入&#xff0c;报错语句为 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near LIMIT 0,1 …

基于Matlab 火焰识别技术

课题介绍 森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用&#xff0c;森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数&#xff0c;造成重大的损失。如果有一款监测软件&#xff0c;从硬件处获得的图像中监测是否有火焰&#xff0c;从而报警&#xff0…

【动手学电机驱动】STM32-FOC(5)基于 IHM03 的无感 FOC 控制

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…

深入理解接口测试:实用指南与最佳实践5.0(一)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

战略共赢 软硬兼备|云途半导体与知从科技达成战略合作

2024年11月5日&#xff0c;江苏云途半导体有限公司&#xff08;以下简称“云途”或“云途半导体”&#xff09;与上海知从科技有限公司&#xff08;以下简称“知从科技”&#xff09;达成战略合作&#xff0c;共同推动智能汽车领域高端汽车电子应用的开发。 云途半导体与知从科…

计算机毕业设计Hadoop+Spark高考推荐系统 高考分数线预测 知识图谱 高考数据分析可视化 高考大数据 大数据毕业设计 Hadoop 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…