对象的几种遍历方法

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

原文地址:https://www.cnblogs.com/shine1234/p/14005258.html