更新時間:2022-10-17 10:52:21 來源:動力節點 瀏覽1862次
遍歷 JSON 對象樹,但找不到任何庫。這似乎并不困難,但感覺就像重新發明輪子。
In XML there are so many tutorials showing how to traverse an XML tree with DOM
如果你認為 jQuery 對于這樣一個原始任務來說有點矯枉過正,你可以這樣做:
//your object
var o = {
foo:"bar",
arr:[1,2,3],
subo: {
foo2:"bar2"
}
};
//called with every property and its value
function process(key,value) {
console.log(key + " : "+value);
}
function traverse(o,func) {
for (var i in o) {
func.apply(this,[i,o[i]]);
if (o[i] !== null && typeof(o[i])=="object") {
//going one step down in the object tree!!
traverse(o[i],func);
}
}
}
//that's all... no magic, no bloated framework
traverse(o,process);
JSON 對象只是一個 Javascript 對象。這實際上就是 JSON 的含義:JavaScript Object Notation。因此,您將遍歷一個 JSON 對象,但是您通常會選擇“遍歷”一個 Javascript 對象。
在 ES2017 中,你會這樣做:
Object.entries(jsonObj).forEach(([key, value]) => {
// do something with key and val
});
您始終可以編寫一個函數以遞歸方式下降到對象中:
function traverse(jsonObj) {
if( jsonObj !== null && typeof jsonObj == "object" ) {
Object.entries(jsonObj).forEach(([key, value]) => {
// key is either an array index or object key
traverse(value);
});
}
else {
// jsonObj is a number or string
}
}
這應該是一個很好的起點。我強烈建議對此類事情使用現代 javascript 方法,因為它們使編寫此類代碼變得更加容易。
function traverse(o) {
for (var i in o) {
if (!!o[i] && typeof(o[i])=="object") {
console.log(i, o[i]);
traverse(o[i]);
} else {
console.log(i, o[i]);
}
}
}
有一個用于使用支持許多不同用例的 JavaScript 遍歷 JSON 數據的新庫。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習