本文目錄
Object.keys()的使用方法及數組周遊
方法一:forEach()
方法二:for()方法
Object.keys()的使用方法及數組周遊
Object.keys()用于獲得由對象屬性名組成的數組,可與數組周遊相結合使用,非常好用。和for...in方法功能類似,但有使用差別!
數組周遊可以用for()或forEach()來實作,forEach()方法是ECMAScript5定義的周遊數組的一個新方法,按照索引的順序挨個傳遞給定義的函數;
接下來就Object.keys()分别結合for()和forEach()使用進行運用,用console.info()輸出到控制台,代碼如下:
方法一:forEach()
// 建立對象
var person = {
name: 'hjm',
age: 18,
school:"SKD University",
home: 'China'
}
// 用forEach()進行周遊
var keys = Object.keys(person).forEach(function (e) {
console.log("person ", e, ": ", person[e]);
});
運作的結果如下圖所示:
方法二:for()方法
// 建立一個對象
var person = {
name: 'hjm',
age: 18,
school:"SKD University",
home: 'China'
}
// 獲得對象屬性名組成的數組
var keys = Object.keys(person);
// 用于存儲比對的屬性值
var value = [];
// 用for進行周遊
for (var i = 0,len = keys.length; i < len; i++) {
var key = keys[i];
value[i] = person[key];
console.log("person ", key, ": ", value[i]);
}
運作的結果如下圖所示:
兩種方法的結果是一樣的,至于使用哪種方法,就智者見智,仁者見仁了。
for():用起來比較容易上手,但太羅嗦;
forEach():和相關的周遊方法結合,使得數組擁有簡單而強大的函數式程式設計風格,更加強大。
Tips:for...in會周遊整個原型鍊,這可能不是你所期望的結果,然後從性能角度上看Object.keys會更優。在一些eslint的規則中也預設禁用了forin循環。
拓展: JS幾種數組周遊方式總結(包括各自周遊的性能分析):https://blog.csdn.net/function__/article/details/79555301