在javascript或typecript中迭代或枚举对象的七种方法(附实例)

123 阅读3分钟

我们有很多方法可以对JavaScript对象进行迭代,在这篇博客中,我们将结合实例讨论JavaScript中循环对象的7种方法。同样的例子也适用于typecript。

如何在javascript中迭代对象?

对象是一组由逗号分隔的键和值,如何列举一个javascript对象的属性?

以下是循环一个普通对象的不同方法:

  • 简单的for-in循环
  • ES5 Object.keys()方法
  • ES6 for-of 循环
  • ES8 Object. entries()方法
  • Jquery每个函数
  • 宿命的forOwn和forIn函数
  • underscoreJS的each方法

让我们声明一个带有键和值列表的对象

  
var obj = {  
    "id": "1",  
    "name": "franc",  
    "salary": "5000"  
};  

并且预期的输出是

id - 1  
name - franc  
salary - 5000  

使用for-in循环进行迭代

for-in是JavaScript中的一个简单的循环,用来迭代一个对象的关键属性。

  • 它返回一个对象的键而不是对象本身。
  • 它还可以使用原型继承来列举一个对象的父属性。
  • if条件表达式中的hasOwnProperty()方法用于忽略父属性。
  • 最后,将键和值用连字符分开显示到控制台。

例子

  
for (var key in obj) {  
    if (obj.hasOwnProperty(key)) {  
        console.log(key + " - " + obj[key]);  
    }  
}  

使用ECMAScript 5 object. entries方法。

ES6引入了Object.keys()forEach方法,以返回对象的枚举属性。

  • Object.key只循环自己的属性,不循环原型键。
  • 它也用于返回一个对象或数组的枚举键。
  • 返回的数组是无序的
  • 它返回一个给定对象的键字符串的数组。
  • forEach适用于有普通键的对象,但不适合于数组
  • forEach与break、continue和return的组合将不能一起使用。
  
Object.keys(obj).forEach(function(key) {  
    console.log(key+" - "+obj[key]);  
});  

使用ES6的for-of循环

ES6增加了新的for-of循环语法,以简单的方式枚举对象和数组。

  
for (const key of Object.keys(obj)) {  
    console.log(key+" - " +obj[key]);  
}

使用ECMAScript 8 object. entries方法

object. entries是ES8中引入的新方法,它可能在最新的浏览器中工作,在旧的浏览器中可以使用polyfill或启用babel插件来支持。它迭代对象自己的键,但忽略了原型继承的键。

  
for (let [key, value] of Object.entries(obj)) {  
  console.log(`${key}- ${value}`);  
}  

JQuery每个循环元素

Jquery库提供了每个函数来迭代一个jquery对象的属性。第一个参数是一个对象,第二个参数是一个回调。回调适用于一个对象的每个元素。

  
$.each(obj, function(key, value) {  
    console.log(key+" - "+value);  
});  

Lodash forOwn和forIn函数

forOwn()函数在Lodash中用于遍历对象自身的属性forIn()函数返回遍历对象的属性,包括继承的原型属性。这两个函数的工作原理是,每个属性都返回迭代对象。每个迭代对象有三个值--值、键和对象

  
_.forOwn(obj, function(value, key) {   
    console.log(key+" - "+value);  
} );  
  
_.forIn(obj, function(value, key) {   
    console.log(key+" - "+value);  
} );  

uderscoreJs的每个函数

每个方法都是underscoreJS的一个实用函数,。
它对一个对象的键进行迭代,并为每个属性返回迭代对象。
Iterates接受对象和回调,回调接受对象的值和键属性。

  
_.each(person, function(value, key) {  
     console.log(key +" - "+ value);  
});