对象的几种遍历方法
1.for in
const obj = { id:1, name:lili, age:18 } for(let key in obj){ console.log(key + '------' + obj[key]) }
输入结果:
id --- 1
name --- lili
age --- 18
2.1)、Object.keys(obj)
2)、Object.values(obj)
参数:
obj:要返回其枚举自身属性的对象
返回值:
一个表示给定对象的所有可枚举属性的字符串数组。
const obj = { id:1, name:'zhangsan', age:18 } console.log(Object.keys(obj)) console.log(Object.values(obj))
输出结果: obj对象的key组成的数组
['id','name','age']
输出结果:obj对象的value组成的数组
['1','zhangsan','18']
3.使用Object.getOwnPropertyNames(obj)
返回一个数组,包含对象自身的所有属性(包含不可枚举属性)
遍历可以获取key和value
const obj = { id:1, name:'zhangsan', age:18 } Object.getOwnPropertyNames(obj).forEach(function(key){ console.log(key+ '---'+obj[key]) })
输出结果:
4.foreach循环
遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE
//1 没有返回值 arr.forEach((item,index,array)=>{ //执行代码 }) //参数:value数组中的当前项, index当前项的索引, array原始数组; //数组中有几项,那么传递进去的匿名回调函数就需要执行几次;
Object.keys(obj).forEach(key => {
console.log(key,obj[key]);
});
5.用.each的方式进行循环,.each的方式进行循环,.each()可以遍历数组和对象
var data = { "李慧慧":145000, "安杰":135000, "Jom":15000, "张公子":1456, "吴功子":45446, "钱雨奇":78779, "王达":25235, "李萌":4646, "于成龙":64646, } $.each(data,function(key,value){ console.log("姓名:"+key+";"+"对应值:"+data[key]); })
6.some遍历
some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ]; console.log( arr.some( function( item, index, array ){ return item > 3; })); true
7.every遍历
every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ]; console.log( arr.every( function( item, index, array ){ return item > 3; })); false
8.filter遍历
不会改变原始数组,返回新数组
var arr = [ { id: 1, text: 'aa', done: true }, { id: 2, text: 'bb', done: false } ] console.log(arr.filter(item => item.done))
9.for of遍历
可以正确响应break、continue和return语句
for (var value of myArray) { console.log(value); }
10.map循环
有返回值,可以return出来
map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了);
arr.map(function(value,index,array){ //do something return XXX })
var ary = [12,23,24,42,1]; var res = ary.map(function (item,index,ary ) { return item*10; }) console.log(res);//-->[120,230,240,420,10]; 原数组拷贝了一份,并进行了修改 console.log(ary);//-->[12,23,24,42,1]; 原数组并未发生变化
11.find
返回一个符合条件的数组的第一个元素
let arr = [1,2,3,4] let Arr = [ {id: 0, name: '小明' }, {id: 1, name: '小白' }, {id: 2, name: '小红' }, {id: 3, name: '小新' } ] arr.find(value,index,arr) => {}) let a = Arr.findIndex(v => v.id === 2) console.log(a); //{ id: 2, name: '小红', age: 3 }
12.使用Reflect.ownKeys(obj)遍历
返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
var obj = {'0':'a','1':'b','2':'c'}; Reflect.ownKeys(obj).forEach(function(key){ console.log(key,obj[key]); });
附加一个地址:https://blog.csdn.net/LaoYangSaid/article/details/107201591