js以變數調用json未知keys的方法?

js遍歷json的時候,假設本人並不知道key究竟是什麼,如何才能調用key呢?以例子來說明:

var json = [{

"Day": "Thursday",

"session1": "Open for All",

"session2": "Open for All",

"session3": "Open for All",

"session4": "Co-cu Male only",

"session5": "Co-cu Male only"

}, {

"Day": "Friday",

"session1": "Open for All",

"session2": "Pray Time",

"session3": "Open for All",

"session4": "Co-cu Female only",

"session5": "Co-cu Female only"

}]

Object.keys(json)可以獲取key沒有錯,但考慮到將來或許需要接收更多key值不一樣json文件,想直接自己寫一個function該怎麼辦

var keys = Object.keys(json[0]) 返回[ "Day","session1","session2","session3","session4","session5"]

keys[0] 返回 "Day"

如何做到json[0].keys[0]實現,json[0].Day的效果


新一點的 :: 運算符:

let firstProperty = {
foo: "abc",
bar: 123
}::getPropertyByIndex(0);

function getPropertyByIndex(index) {
let keys = Object.keys(this);
let key = keys[index];
return this[key];
}

或者 getter:

Object.defineProperty(Object.prototype, "properties", {
get() {
return Object
.keys(this)
.map(key =&> this[key]);
}
});


js object property 是無序的,你通過 Object.keys() 獲得的結果,順序也是不能保證的。


var obj = {"mykey1": "value1", "mykey2": "value2"};

var arrKey = [];

for (var key in obj) {

console.log(key);

console.log(obj[key]);

arrKey.push(key);

}

console.log(arrKey); // 這就包含了obj中所有的鍵值,你就可以通過arrKey[0]取到第一個鍵值


你就不應該用對象存儲數據。

如果你的數據本來就是列表,需要存留前後隊列關係,請用數組。

這裡的對象存儲請當成一個key和value的映射關係,而key可以賦予語意,讓描述更清晰準確。


推薦閱讀:

教學用的代碼使用面向對象技術合適嗎?
先有Class還是先有Object?
「重載」的正確讀音是什麼?
如何理解js的面相對象?

TAG:JavaScript | jQuery | 面向對象編程 | JSON |