当前位置:网站首页>js中常用的几种遍历处理数据的方法梳理
js中常用的几种遍历处理数据的方法梳理
2022-08-04 00:36:00 【paradoxaaa_】
forEach,Object.keys,map,for in ,for of,reduce,every
1,forEach 用于遍历【数组】
data.forEach(( item, index ) => {
console.log('元素:', item ,';下标:', index)
})
2, Object.keys() 和 forEach() 结合遍历【对象】
Object.keys返回一个数组,数组元素是输入对象所有的键名的集合
Object.keys(testData).forEach((key)=>{
console.log(key) //键
console.log(testData[key]) //值
})
注意:Object.keys出来的顺序不一定是对象属性原来的顺序,顺序和for..in相同。
另外Object.keys还有一个妙用就是获取对象的长度,在js中数组长度可用length得到,对象长度用length获取的结果是undefined,使用Object.keys(obj).length就可以得到对象长度了。
3,for...of (es6)用于遍历【数组】内的【元素】,不包括原型属性和索引名
let myArray = [1,2,4,11,6,7]
for (let value of myArray) {
console.log(value) //一次输出元素1、2、4、11、6、7
}
4,for...in (es5)用于遍历【对象/数组】内的【键名】,包括原型属性 (所以慎用!)
let myArray = ['a',123,{a:'1',b:'2'}] //或为对象myArray = {a:'1',b:'2'}
for(let index in myArray){
console.log(index,myArray[index]) //输出键名 和 元素值
}
注意1:for..in会把某个类型的原型(prototype)中的方法与属性遍历出来,用代码解释如下:
let obj = {a: {aa: '123', b: {1,2,3} } }
Object.prototype.test = () => { console.log('123') }
for (let value in obj) {
console.log(value) //a, b, test
}
不想遍历原型方法和属性的话,可以在循环内部使用hasOwnPropery方法可以判断某属性是否是该对象的实例属性
if(!array.hasOwnProperty(i)){
continue;
}
注意2:for..in遍历对象{}时出来的顺序不一定是对象属性原来的顺序,顺序和Object.keys相同。
5,map 用于遍历【数组】产生一个新的元素值,返回一个新数组为这些新值的集合

6,reduce 用于遍历【数组】进行累计计算,返回结果是一个计算后最终的值

其实玩法很多,完整参数如下:
myArray.reduce((countOrFirst,curr,currindex,arr) => {
console.log('第一个值/上次计算结果',countOrFirst, '当前要计算的值',curr, '当前元素的索引',currindex)
console.log('当前元素所属的数组对象',arr)
return countOrFirst + curr
}, firstValue)
7,every 用于遍历【数组】并且为数组元素调用callbackfn,返回结果是boolean值
当每一次callbackfn返回true时every返回true,否则false

原文链接:https://blog.csdn.net/qq_20069429/article/details/81568046
边栏推荐
猜你喜欢

win10+cuda11.7+pytorch1.12.0 installation

typescript55-泛型约束

电子制造企业部署WMS仓储管理系统的好处是什么

中原银行实时风控体系建设实践

手撕Gateway源码,今日撕工作流程、负载均衡源码

Web3 security risks daunting?How should we respond?

It will invest about 200 billion US dollars in the United States in 20 years, and Samsung Electronics looks so handsome

虚拟机CentOS7中无图形界面安装Oracle

corn表达式 具体详解与案例

状态机实验
随机推荐
Nanoprobes Mono- Sulfo -NHS-Nanogold的使用和应用
typescript51 - basic use of generics
关于mnn模型输出的数据杂乱无章问题
Nanoprobes Alexa Fluor 488 FluoroNanogold 偶联物
孙宇晨:Web3.0和元宇宙将协助人类更加全面地进入网络世界
迭代扩展卡尔曼滤波IEKF
DataBinding下的RecycleView适配器Adapter基类
Mvc、Mvp和Mvvm
2022-08-03: What does the following go code output?A: 2; B: 3; C: 1; D: 0.package main import "fmt" func main() { slice := []i
114. 如何通过单步调试的方式找到引起 Fiori Launchpad 路由错误的原因
Shell编程之循环语句(for、while)
NLP resources that must be used for projects [Classified Edition]
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
20年将投资美国约2000亿美元,三星电子财大气粗的样子真好看
[Miscellaneous] How to install the specified font into the computer and then use the font in the Office software?
Nanoprobes丨Nanogold-抗体和链霉亲和素偶联物
XSS-绕过for循环过滤
通过whl安装第三方包
jmeter distributed stress test
2023年第六届亚太应用数学与统计学国际会议(AMS 2023)