是否有辦法將for ... in循環中的所有內容過濾掉以僅獲取對象?For ...在環路中僅篩選對象
我正在寫一個函數來循環嵌套對象來查找某些數據片段,然後將其保存到localStorage。
實施例:
var equipped = {
data: [the rest of the properties of equipped go here],
tool: {
data: [the rest of the properties of tool go here],
axe: {
data: [the rest of the properties of axe go here],
iron: {...},
steel: {...}
}
}
}
的工具/ AX /金屬屬性都動態地生成的,並且每個時間是不同的。金屬屬性內部是我試圖保存的數據。如果我試圖訪問數據,我通常會循環訪問數據(使用knockoutjs進行綁定,僅僅對foreach數據數組更容易),但是我使用for ... in循環中的變量來構建在對其進行字符串化之前,我的localStorage對象中的其餘部分樹。
我如何閱讀對象:
for (var type in equipped) {
if (check goes here) {
savedValue.equipped[type] = {};
for (var category in equipped[type]) {
etc etc...
}
}
}
我明白一切都是對象類型,所以我不能只是做一個instanceof
或typeof
定義的對象將它們過濾出來。是否有另一種簡單的方法在if語句中執行它,還是必須從構造函數中完成樹的每一步,因此我可以instanceof RealObject
?
並非一切都將復出爲「對象」時調用'typeof運算'。請參閱:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof – User 2014-11-06 05:56:34
不,但數組會。我只需要做一個if(typeof type ==='object'&&!Array.isArray(type))來解決這個問題? – LastElf 2014-11-06 06:11:51