数组(Array)的常用方法
文章内容输出来源:拉勾教育 大前端高薪训练营
迭代方法
map
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。代码如下(示例):
const map = (array, fn) => {let results = [] for (const value of array) { results.push(fn(value)) }return results } let numbers = [1, 2, 3, 4]; let mapResult = map(numbers, (v) => v * v); console.log(mapResult); // [1, 4, 9, 16]
every
对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。代码如下(示例):
const every = (array, fn) => {let result = true for (const value of array) { result = fn(value) if (!result) { break } }return result } let numbers = [1, 2, 3, 4]; let flag= every (numbers, (v) => v > 2); console.log(flag); // false
some
对数组中的每一项运行给定函数,如果该函数对任一项都返回true,则返回true。代码如下(示例):
const some = (array, fn) => { let result = false for (const value of array) { result = fn(value) if (result) { break } }return result } let numbers = [1, 2, 3, 4]; let flag= some (numbers, (v) => v > 2); console.log(flag); // true
归并数组方法
reduce()和reduceRight()
相同点
1、都会迭代数组的所有项,然后构建一个最终返回的值。
2、都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
3、传入的函数接收4个参数:Accumulator (acc):累计器
Current Value (cur):当前值
Current Index (idx):当前索引
Source Array (src):源数组不同点
reduce():从数组的第一项开始,逐个遍历到最后。
reduceRight():从数组的最后一项开始,向前遍历到第一项。reduce
代码如下(示例):
let values = [1, 3, 5, 7, 9]; let sum = values.reduce(function (acc, cur, idx, src) {// 1、acc = 1, cur = 3, idx = 1// 2、acc = 4, cur = 5, idx = 2// 3、acc = 9, cur = 7, idx = 3// 4、acc = 16, cur = 9, idx = 4// 5、acc = 25, cur 没有下一项, 因此结束,所以最后 sum = 25return acc + cur; }); console.log(sum); // 25
reduceRight
代码如下(示例):
let values = [1, 3, 5, 7, 9]; let sum = values.reduceRight(function (acc, cur, idx, src) {// 1、acc = 9, cur = 7, idx = 3// 2、acc = 16, cur = 5, idx = 2// 3、acc = 21, cur = 3, idx = 1// 4、acc = 24, cur = 1, idx = 0// 5、acc = 25, cur 没有上一项, 因此结束,所以最后 sum = 25return acc + cur; }); console.log(sum); // 25
总结
1、传入函数返回的任何值都会作为第一个参数自动传给下一项。
2、 第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
注意
reduce
传入的函数还有一个可选参数initialValue
,该参数将作为第一次调用回调函数时的第一个参数的值。如果没有提供initialValue
,则将使用数组中的第一个元素。
重排序方法
sort
字符串根据ASCII码进行排序 Array的sort()方法默认把所有元素先转换为String再排序。代码如下(示例):
let arr = [10, 20, 1, 2]; arr.sort( (x, y) => {return x - y; }); console.log(arr); // [1, 2, 10, 20]
查找方法
find
用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined代码如下(示例):
// 找到第一个符合条件的元素,返回该成员 let arr = [-5, 4, 1, 2]; let result = arr.find( (n) => n < 0); console.log(result ); // -5// 没有找到符合条件的元素,返回undefined let values= [3, 4, 1, 2]; let num= values.find( (n) => n < 0); console.log(num); // undefined
findIndex
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
代码如下(示例):let values = [1, 5, 10, 15] let index = values.findIndex(function(value, index, arr) {return value > 9; }) console.log(index) // 2
数组(Array)的常用方法相关推荐
- js数组array的常用方法
数组array 方法1: slice[start,end]:返回从原数组中指定开始下标到结束下标之间的项组成的新数组(原数组不变) 1个参数:n,即n到末尾的所有 2个参数:[start,end] v ...
- Js Array数组ES5/ES6常用方法
Js Array数组ES5/ES6常用方法 1.栈方法(先进后出) push():在数组的最后一项后追加值(参数:可以为多个值或数组) 返回:数组的长度,改变了原数组. var a=[1,2,3] a ...
- js 加总数组中某一列_JS数组求和的常用方法实例小结
本文实例总结了JS数组求和的常用方法.分享给大家供大家参考,具体如下: js数组求和的方法 var array = [1, 2, 3, 4, 5]; var sum = 0; 1.for循环 for ...
- Java-杂项:Java数组Array和集合List、Set、Map
ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...
- PIL中的Image和numpy中的数组array相互转换
PIL中的Image和numpy中的数组array相互转换 array转换成image 1 Image.fromarray(np.uint8(img)) https://www.cnblogs.com ...
- 元组Tuple、数组Array、映射Map
一.元组Tuple 元组Tuple是不同类型的值的聚集,元组的值将单个的值包含在圆括号中来构成,元组可以包含一个不同类型的元素 如 val riple = (100, "Scala" ...
- PHP删除数组(array一维)中指定的某个值 (转)
2019独角兽企业重金招聘Python工程师标准>>> PHP删除数组(array一维)中指定的某个值 PHP删除数组(array一维)中指定的某个值 根据指定的值删除: $stu ...
- php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
- Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别...
ArrayList和Vector的区别 ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的. ...
- php怎样解析数组,PHP 数组 Array 解析
官方介绍 PHP 数组实际上是一个有序的映射(map),映射是一种把多个值(values)关联到对应的多个键(keys)的类型.这种映射类型在很多方面做了优化,因此可以把它当成真正的数组(就是上面说的 ...
最新文章
- 热门云服务超87GB电子邮箱和密码泄露,黑客已验证大部分数据
- 初来乍到,发布一个杀手应用:snap.com的web预览图功能,我给它取名叫“WebSnap”...
- 让Visual Studio 2005 Team Foundation Server支持Wss3
- cghhhhhhhhhhhhhhhhhh
- 【Mysql】之视图操作
- 你的搜索其实很糟糕?
- JS-节点增删改-document-HTML DOM-事件
- Datawhale 零基础入门数据挖掘-Task2 数据分析
- 嵌入式linux调试dsi,做嵌入式开发时,你是怎么实现LCD显示的?
- 纯javaweb项目整合quarz定时器
- 使用thrift做c++,java和python的相互调用 - jinghong - ITeye技术网站
- PRML 1.6 信息论
- 面向对象编程训练:模拟购物车模块(:3[▓▓]快醒醒开学了
- js给数组的每个对象添加字段(字段值对应下标)
- python+requests接口测试
- 如何制作Mountain Lion系统镜像
- 嵌入式系统开发笔记91:认识ARM微控制器架构
- 乘基取整法是什么_数学基础——进制转换
- 一键清理系统垃圾文件脚本: clean.bat
- 机器学习-准确率、召回率、精确率、f1score等