我有這個工作代碼,它從JS對象中檢索對象屬性的名稱(不幸的是!)超出了我的範圍。所以我無法改變這個對象的構建方式。但是我想(並且確實)將屬性的名稱(標記爲true
)提取爲數組,以便能夠更輕鬆地處理此對象。通過名稱獲得嵌套對象屬性的更優雅方式?
對象:
{
group1: {
foo: true,
itemFoo: "Name of foo", // This is what I want, because foo is true
bar: false,
itemBar: "Name of bar", // I dont want this, bar is false
// ...
},
group2: {
baz: true,
itemBaz: "Name of baz", // I want this too
// ...
},
uselessProp1: "not an object",
// ...
}
工作代碼:
var items = [];
for (var m in obj) {
if (typeof obj[m] == 'object') {
for (var n in obj[m]) {
if (obj[m][n] === true) {
items.push(obj[m]['item' + (n.charAt(0).toUpperCase() + n.slice(1))]);
}
}
}
}
我的問題是:沒有人知道實現這個遍歷與underscore.js或普通的node.js或任何其他的更優雅的方式圖書館?我做了_.filter
的實驗,但沒有提出解決方案。
這是最好的方式,因爲它是可讀的,因此可維護,易於更改,發現錯誤,不依賴於第三方模塊等。 – 2013-02-15 11:27:46