【JavaScript】遍歷對象屬性

遍歷對象屬性

這篇博客的靈感來自於牛客網的一道題:屬性遍歷

題目描述:
找出對象 obj 不在原型鏈上的屬性(注意這題測試例子的冒號後面也有一個空格~)
1、返回數組,格式爲 key: value
2、結果數組不要求順序

1. for in

  • for-in會漏掉不可枚舉屬性;
  • for-in會遍歷原型鏈上的屬性,需要配合hasOwnProperty過濾
function iterate(obj) {
    // hasOwnProperty
    // 如果使用for in遍歷,很重要的一點是不能遍歷的自身屬性會被遺漏
    var result = [];
    for(var p in obj){
		if(obj.hasOwnProperty(p)){
			result.push(p + ": " + obj[p]);
		}
	}
	return result;
}

2. Object.keys()

  • 返回對象自身的可枚舉屬性
function iterate(obj) {
    return Object.keys(obj);
    return result.map(n => n + ": " + obj[n]);
}

3. Object.getOwnPropertyNames()

  • 返回自身的所有屬性,含不可枚舉屬性
// 從題目要求來看,這纔是正解
function iterate(obj) {
    // 如果使用for in遍歷和 Object.keys,很重要的一點是不能遍歷的自身屬性會被遺漏
    var names = Object.getOwnPropertyNames(obj);
    return  names.map(function(n){return n + ": " + obj[n]});
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章