当前位置:网站首页>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
边栏推荐
猜你喜欢

第1章:初识数据库与MySQL----MySQL安装

C# wpf使用ffmpeg命令行实现录屏

Nanoprobes Alexa Fluor 488 FluoroNanogold 偶联物

The Beijing E-sports Metaverse Forum was successfully held

Node.js的基本使用(三)数据库与身份认证

【杂项】如何将指定字体装入电脑然后能在Office软件里使用该字体?

现货白银需要注意八大事项

Web3 安全风险令人生畏?应该如何应对?

typescript52 - simplify generic function calls

pcl点云数据 转化为 Eigen::Map
随机推荐
通过whl安装第三方包
[Miscellaneous] How to install the specified font into the computer and then use the font in the Office software?
pcl点云数据 转化为 Eigen::Map
七夕活动浪漫上线,别让网络拖慢和小姐姐的开黑时间
How to find the cause of Fiori Launchpad routing errors by single-step debugging
RSS订阅微信公众号初探-feed43
因为一次bug的教训,我决定手撕Nacos源码(先撕客户端源码)
【性能优化】MySQL常用慢查询分析工具
ML18-自然语言处理
A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
TypeScript学习
Eight things to pay attention to in spot silver
The Beijing E-sports Metaverse Forum was successfully held
跨域问题解决方式 代理服务器
孙宇晨受邀参加36氪元宇宙峰会并发表主题演讲
typescript53-泛型约束
2023年第六届亚太应用数学与统计学国际会议(AMS 2023)
机器学习——库
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三:两次优化
咱们500万条数据测试一下,如何合理使用索引加速?