当前位置: 首页 > news >正文

数组常用方法(2)---数组遍历方法

1. forEach(cb)

  • 回调函数中有三个参数,第一个是当前遍历项(必须),第二个是索引,第三个是遍历的数组本身。
  • forEach() 对于空数组不会执行回调函数。
  • forEach()不会使用回调函数的返回值,返回值为undefined。
let arr = [1, 2, 3, {a:1,b:2}]
let res = arr.forEach((val, index) => {console.log(val, index);if(index === 3) return arr[index] = {c:3}arr[index] = 0
})
console.log(res);
console.log(arr);
1 0
2 1
3 2
{ a: 1, b: 2 } 3
undefined
[ 0, 0, 0, { c: 3 } ]

2. filter(cb)

  • 回调函数中有三个参数,第一个是当前遍历项(必须),第二个是索引,第三个是遍历的数组本身。
  • filter()筛选出符合条件的元素,放到新数组中并返回,return 后可以是筛选条件,若在回调中return true,则会把当前遍历项放入新数组。
  • 返回值是筛选后的新数组。
let arr = [1, 2, 3, {a:1,b:2}]
let res = arr.filter((val, index) => {console.log(val, index);return typeof val === 'number'
})
console.log(res);
console.log(arr);
1 0
2 1
3 2
{ a: 1, b: 2 } 3
[ 1, 2, 3 ]
[ 1, 2, 3, { a: 1, b: 2 } ]

3.map(cb)

  • 回调函数中有三个参数,第一个是当前遍历项,第二个是索引,第三个是遍历的数组本身。
  • map()处理数组的每一个元素,放到新数组中并返回,return 一个需要的元素来替换旧元素。(通常用于把数组元素处理成想要的格式)
  • 返回值是与原数组有映射关系的新数组。
let arr = [1, 2, 3, {a:1,b:2}]
let res = arr.map((val, index) => {console.log(val, index);return {value: val,index:index}
})
console.log(res);
console.log(arr);
1 0
2 1
3 2
{ a: 1, b: 2 } 3
[{ value: 1, index: 0 },{ value: 2, index: 1 },{ value: 3, index: 2 },{ value: { a: 1, b: 2 }, index: 3 }
]
[ 1, 2, 3, { a: 1, b: 2 } ]

4. some()

  • 回调函数中有三个参数,第一个是当前遍历项,第二个是索引,第三个是遍历的数组本身。
  • return 后面是一个条件,结果是true / false,有一个满足条件的元素就返回true,后面的不再判断,所有都不满足则返回false。
  • 返回值是与原数组有映射关系的新数组。
let arr = [1, 2, 3, {a:1,b:2}]
let res = arr.some((val, index) => {console.log(val, index);return typeof val === 'number'
})
console.log(res);
console.log(arr);
1 0
true
[ 1, 2, 3, { a: 1, b: 2 } ]

5. every()

  • 回调函数中有三个参数,第一个是当前遍历项,第二个是索引,第三个是遍历的数组本身。
  • return 后面是一个条件,结果是true / false,有一个不满足条件的元素就返回false,后面的不再判断,所有都满足则返回true。
  • 返回值是与原数组有映射关系的新数组。
let arr = [1, 2, 3, {a:1,b:2}]
let res = arr.every((val, index) => {console.log(val, index);return typeof val === 'number'
})
console.log(res);
console.log(arr);
1 0
2 1
3 2
{ a: 1, b: 2 } 3
false
[ 1, 2, 3, { a: 1, b: 2 } ]

6. includes(val,index)

  • includes()有两个参数,第一个是要查找的值,第二个是开始查找的索引,默认为0,负数表示从后往前找,比如-1表示从倒数第一个元素开始查找,若负数的绝对值大于数组长度,则索引置为0。

Array构造下的includes()可以判断一个数组中是否包含一个指定的元素,不建议用来判断复杂数据类型,判断NaN会返回true。

let obj = {a:111}
let arr = [1, 2, 3,'ss',{a:111}]
arr.push(obj)
let res1 = arr.includes({a:111}) /* 因为复杂数据类型的值相等其引用也不一定相等,所以返回false */
let res2 = arr.includes(obj) /* 这里判断的是push进去的同一个对象,所以返回true */
let res3 = arr.includes(2)
let res4 = arr.includes(NaN) /* 判断NaN会返回true */
console.log(res1);
console.log(res2);
console.log(res3);
console.log(res4);
console.log(arr);
false
true
true
true
[ 1, 2, 3, 'ss', { a: 111 }, { a: 111 } ]

注意:数组最后一个元素是push进去的obj,倒数第二个是初始定义的{a:111},两个对象值相同,但是引用地址不同。

String构造下的includes()可以判断一个字符串中是否包含另一个字符串,判断时建议筛除空字符串,因为任何字符串判断是否包含空字符串都会返回true。

let str = 'hello world!'
let res = str.includes(0)
let res1 = str.includes('')
let res2 = str.includes('hello')
let res3 = str.includes('lo ')
let res4 = str.includes('heee')
console.log(res);
console.log(res1);
console.log(res2);
console.log(res3);
console.log(res4);
false
true
true
true
false

7. indexOf()

8. findIndex()

9. reduce(cb,initial)

  • reduce()有两个参数,第一个参数是回调函数,第二个值是迭代相加的初始值。
  • 回调函数中有四个参数,第一个是初始值或迭代相加值,第二个当前遍历项(必须),第三个是索引,第四个是遍历的数组本身。
  • 返回值是迭代相加的值,需要在reduce外输出迭代相加的值。

此处案例是得到一个对象,对象属性的值为数组各元素对应属性的和

// mockData
let arr = [{num1:11,num2:22,num3:33,num4:100},{num1:11,num2:22,num3:33,num4:100},{num1:11,num2:22,num3:33,num4:100},{num1:11,num2:22,num3:33,num4:100}
]// code start
let total  = {num1:0,num2:0,num3:0,num4:0
}
let res = arr.reduce((pre, val) => {Object.keys(pre).forEach((item,i)=>{// 这里的数据相加只能是整数,否则有精度问题,如果要考虑含小数的相加,需要引入数据处理的包,比如math.jspre[item] += val[item] })return pre
},total)
console.log(res);
{ num1: 44, num2: 88, num3: 132, num4: 400 }

相关文章:

数组常用方法(2)---数组遍历方法

1. forEach(cb) 回调函数中有三个参数,第一个是当前遍历项(必须),第二个是索引,第三个是遍历的数组本身。forEach() 对于空数组不会执行回调函数。forEach()不会使用回调函数的返回值,返回值为undefined。…...

卸载Node.js

0 写在前面 无论您是因为什么原因要卸载Node.js都必须要卸载干净。 请阅读: 1 卸载步骤 1.1通过控制面板卸载node.js winR—>control.exe—>卸载程序—>卸载Node.js 等待—>卸载成功 1.2 删除安装时的nodejs文件夹 通过记忆或者Everthing搜索找…...

发表计算机SCI论文,会经历哪些过程? - 易智编译EaseEditing

一、选期刊。 一定要先选期刊。每本期刊都有自己的特色和方向,如果你的稿子已经成型,再去考虑期刊选择的问题,恐怕后期不是退稿就是要大面积修改稿子。 选期刊的标准没有一定的,主要是各单位都有自己的要求,当然小编…...

python中lambda的用法

1. lambada简单介绍 lambda 在Python编程中使用的频率非常高,我们通常提及的lambda表达式其实是python中的一类特殊的定义函数的形式,使用它可以定义一个匿名函数。即当你需要一个函数,但又不想费神去命名一个函数,这时候&#xf…...

网络安全协议(3)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.当前流行操作系统的安全等级 1.Windows的安全等级 什么是EAL…...

102.第十九章 MySQL数据库 -- MySQL的备份和恢复(十二)

5.备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 参考链接: https://www.toutiao.com/a6939518201961251359/ 5.1.2 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数…...

【C++】C++入门 类与对象(一)

类与对象(一)一、类的引入二、类的定义1、类的两种定义方式:2、成员变量命名规则的建议:三、类的访问限定符及封装1、访问限定符2、封装四、类的实例化1、类的实例化概念2、类对象的大小的计算五、this指针this指针的特性一、类的…...

笔记_js运算符

目录二进制相关运算符移位运算符<<>>&#xff5c;(位或运算)参考文档二进制相关运算符 移位运算符 移位运算就是对二进制进行有规律的移位。 tips:进制转换文档链接 << “<<”运算符执行左移位运算。在移位运算过程中&#xff0c;符号位始终保持不变…...

java面试题(十九) Mybatis

4.1 谈谈MyBatis和JPA的区别 参考答案 ORM映射不同&#xff1a; MyBatis是半自动的ORM框架&#xff0c;提供数据库与结果集的映射&#xff1b; JPA&#xff08;默认采用Hibernate实现&#xff09;是全自动的ORM框架&#xff0c;提供对象与数据库的映射。 可移植性不同&…...

Linux系统位运算函数以及相应CPU ISA实现收录

以32位数据的二进制表示为例&#xff0c;习惯的写法是LSB在左&#xff0c;MSB在右&#xff0c;注意BIT序和大小端的字节序没有关系。Linux和BIT操作有关的接口在定义在头文件bitops.h中&#xff0c;bitops.h定义有两层&#xff0c;通用层和架构层&#xff0c;对应两个bitops.h&…...

logback配置文件---logback.xml

目录常识操作logback-spring.xml 示例参考于 https://blog.csdn.net/white_ice/article/details/85065219 https://blog.csdn.net/weixin_42592282/article/details/122109703 https://www.dianjilingqu.com/629077.html 常识 https://www.dianjilingqu.com/629077.html nod…...

Web前端-设计网站公共header

设计网站公共headerheader元素是一个具有引导和导航作用的结构元素&#xff0c;很多企业网站中都有一个非常重要的header元素&#xff0c;一般位于网页的开头&#xff0c;用来显示企业名称、企业logo图片、整个网站的导航条&#xff0c;以及Flash形式的广告条等。在本网站中&am…...

引用和指针傻傻分不清

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;引用和指针的区别 &#x1f338;从现象上看 &#x1f338;从编译上看 &am…...

MySQL面试题:关系型数据库SQL和非关系型数据库NoSQL

文章目录一、四大非关系型数据库与关系型数据库的对比1. 关系型数据库2. 基于列的数据库3. 键值对存储4. 文档存储5. 图形数据库参考文章&#xff08;金文&#xff09;&#xff1a;四大非关系型数据库类型&#xff0c;你知道多少 参考文章&#xff1a;“行式存储”和“列式存储…...

1.Redis【介绍与安装】

1.常用数据库介绍 mysql的表类型[表引擎.存储引擎],memory表结构和表数据分开存储的,表结构保存在硬盘中,表数据保存在内存中memcache是一款软件,可以使用键值对的格式保存数据到内存中redis是意大利的工程师开发的开源免费的告诉缓存数据库,需要注意的是作者本身只开发了linu…...

DataStore快速上手1-preference

DataStore 概念 DataStore 可以存储两种类型的数据&#xff0c;一种是 preference&#xff0c;一种是 protobuf 每个进程在同一时间内仅能打开一个 DataStore 实例&#xff08;或者通过其他管理手段来实现多个 DataStore 交替使用&#xff09; 一个 DataStore 可以视为一张数…...

彻底掌握 MySQL InnoDB 的锁机制

本文是对沈剑大佬锁机制十多篇文章的概括总结&#xff0c;文末有全部链接&#xff0c;还参考了 10 多位其他网友的优秀分享。 1、概要 MySQL 中的锁可以按照粒度分为锁定整个表的表级锁(table-level locking)和锁定数据行的行级锁(row-level locking)&#xff1a; 表级锁具有开…...

C++继承

1.继承的概念及定义 1.1继承的概念 继承机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#x…...

动态代理是基于什么原理?

第6讲 | 动态代理是基于什么原理&#xff1f; 编程语言通常有各种不同的分类角度&#xff0c;动态类型和静态类型就是其中一种分类角度&#xff0c;简单区分就是语言类型信息是在运行时检查&#xff0c;还是编译期检查。 与其近似的还有一个对比&#xff0c;就是所谓强类型和弱…...

YOLO-V4经典物体检测算法介绍

在前文我们介绍了YOLO-V1~V3版本都做了哪些事&#xff0c;本文我们继续介绍YOLO-V4版本。YOLO的作者在发表完V3之后&#xff0c;发现YOLO产品被美国军方应用到了很多军事战争当中&#xff0c;这是他所不希望看见的&#xff0c;因此宣布不再继续研究。但历史和科技总是随时间不断…...

angular相关知识点总结

创建 angualr 组件和传值 angular组件其实就是个xxx.component.ts,本质还是ts文件一个html文件 1.创建组件&#xff1a;在Angular中&#xff0c;可以使用命令行工具ng generate component创建一个新组件。例如&#xff1a; ng generate component my-component这将创建一个名…...

大坝安全监测系统:水库“守坝人”!

一、项目背景 随着社会经济的迅速发展&#xff0c;我国水资源利用率越来越高&#xff0c;各类水利水电工规模进一步扩大。在抗洪救灾、水利发电等方面带来巨大的经济和社会效益。但受多种因素影响&#xff0c;大坝的安全问题日益严重。大量工程实践证明&#xff0c;为保证大坝…...

CentOS7安装配置OpenVNP连接远端服务器

在项目当中需要访问一个三方接口及数据库&#xff0c;但是需要在CentOS7服务器上先配置OpenVPN&#xff0c;然后才能连接&#xff0c;现将整体配置过程记录如下。 安装 yum -y install epel-release yum -y install openvpn 查看版本 openvpn --version 配置客户端证书 打开…...

04- Matplotlib数据可视化详解 (数据库)

Matplotlib的亮点: import matplotlib.pyplot as plt # 导包plt.figure(figsize (9, 6) , 设置图片大小plt. plot(x, y), 画图绘制网格线: 线型, 颜色, 透明度plt.grid(linestyle --, color green, alpha0.75) # linestyle: 样式, color: 颜色, alpha: 透明度plt.axis(…...

高性能MySQL -- 查询性能优化

一般来说一个好的程序&#xff1a;查询优化&#xff0c;索引优化&#xff0c;库表结构要同时进行优化。今天我们来讲一下查询优化。 我们需要对MySQL的架构有基本认知&#xff0c;所以这里贴一张图大家看看&#xff1a; 图片来自于《小林coding》 为什么从查询会慢&#xff1…...

Android Binder机制之一(简介)

目录 前言 一、Android 进程间通信方式 二、Binder架构图 三、Binder涉及角色 3.1 Binder驱动 3.2 Binder实体 3.3 Binder引用 3.4 远程服务 3.5 ServiceManager守护进程 四、涉及源码 前言 这是本人第N次看Binder 相关知识了&#xff0c;其实每次看都有新的收获&…...

《SOC芯片研究框架》深度科普,发展趋势、技术特点、产业链一文看懂

片上系统SoC&#xff08;System on Chip&#xff09;&#xff0c;即在一块芯片上集成一整个信息处理系统&#xff0c;简单来说 SoC芯片是在中央处理器CPU的基础上扩展音视频功能和专用接口的超大规模集成电路&#xff0c;是智能设备的“大脑”。随着半导体工艺的发展&#xff0…...

WebRTC中的ICE

ICE简介 ICE是用于UDP媒体传输的NAT穿透协议&#xff08;适当扩展也可以支持TCP&#xff09;&#xff0c;它需要利用STUN和TURN协议来完成工作。 STUN协议提供了获取一个内网地址对应的公网地址映射关系&#xff08;NAT Binding&#xff09;的机制&#xff0c;并且提供了它们…...

了解webpack

文章目录一、webpack是什么&#xff1f;二、为什么要使用webpack三、webpack的五个核心概念四、安装webpack提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、webpack是什么&#xff1f; 本质上&#xff0c;webpack 是一个用于现代 JavaScript 应用程…...

NoSQL数据库详细介绍

一、NoSQL发展历史 NoSQL 一词最早出现于 1998 年&#xff0c;是 Carlo Strozzi 开发的一个轻量、开源、不提供 SQL 功能的关系数据库。 2009 年&#xff0c;Last.fm 的 Johan Oskarsson 发起了一次关于分布式开源数据库的讨论&#xff0c;来自 Rackspace 的 Eric Evans 再次…...

南宁网站建设哪家公司/个人博客登录首页

今天在看uboot引导Linux部分&#xff0c;发现要对链接脚本深入了解&#xff0c;才能知道各个目标文件的内存分布映像&#xff0c;下面是我看到的一些资料 0. Contents 1. 概论 2. 基本概念 3. 脚本格式 4. 简单例子 5. 简单脚本命令 6. 对符号的赋值 7. SECTIONS命令 8. MEMORY…...

网站建设 推荐/百度小说风云榜今天

IOS中图片拉伸技巧与方法总结 一、了解几个图像拉伸的函数和方法 1、直接拉伸法 简单暴力&#xff0c;却是最最常用的方法&#xff0c;直接将图片设置为ImageView的image属性&#xff0c;图片便会随UIImageView对象的大小做自动拉伸。这种拉伸的方法有一个致命的缺陷&#xff0…...

东莞服务行业推广软件/赣州seo外包怎么收费

在三大运营商中&#xff0c;联通与互联网企业的合作最积极&#xff0c;近日中国联通研究院院长张云勇透露腾讯大王卡已经发展了5000多万用户&#xff0c;那么这一成绩对联通全是好事么&#xff1f;拿数据来对比看看。中国联通与互联网企业的合作始自去年10月份&#xff0c;2016…...

镇江网站建设 的公司/站长工具端口

01 阿里中间件&#xff08;四面&#xff0c;Java岗&#xff09; 1.1 Java中间件一面 技术一面考察范围 重点问了Java线程锁&#xff1a;synchronized 和ReentrantLock相关的底层实现 线程池的底层实现以及常见的参数 数据结构基本都问了一遍&#xff1a;链表、队列等 Java内存…...

wordpress中文版好还是英文版好/互联网搜索引擎有哪些

我已经审查了围绕HTML在Python中进行JSON解析的可能解决方案&#xff0c;但无法确定正确的解决方案。内容&#xff1a;原型的一部分&#xff1a;我正在使用request.get()方法从第三方组织接收数据。响应为HTML 4.0(loose.dtd格式)。问题陈述&#xff1a;使用Json.dumps和file.w…...

wordpress做成仿阿里巴巴/百度url提交

点击蓝字关注我们为什么需要超时控制&#xff1f;请求时间过长&#xff0c;用户侧可能已经离开本页面了&#xff0c;服务端还在消耗资源处理&#xff0c;得到的结果没有意义过长时间的服务端处理会占用过多资源&#xff0c;导致并发能力下降&#xff0c;甚至出现不可用事故Go 超…...