沒有出現這一切都在控制檯的屏幕上。
The Rundown: 所以這是我正在開發的一個項目。基本上我試圖將腳本頂部的巨大對象解構成包含所有必需數據的小對象(代碼中的wholeObject)。這樣我可以在這個項目的下一步中重建它們。
現在這是產生一個無限循環,但我在這裏要做的是到達(靠近)底部的樹,並在底部存儲所需的對象的路徑,所以我可以存儲整個對象與我想要的所有數據。然後,在我這樣做之後,我想從較大的對象中刪除該對象,以便我再也找不到它並重復該過程,以獲得可能位於較大對象中的儘可能多的對象,直到沒有任何東西剩下爲止,此時I我完成了這個階段。
現在的問題是,我不知道如何從較大的對象中刪除該對象,以便它找到相同的對象。我試着將它設置爲null和delete關鍵字。據我可以告訴我什麼時候在我的「r.removeLowest」方法中對那些「obj」中的任何一個進行賦值,它只是將更改應用於obj變量而不是它引用的內容(樹中的對象/更大目的)。
任何幫助將不勝感激我會在夜晚的大部分時間和常規檢查。
測試以下對象:
//test object
var sample = {"Ocean Event":
{"2001":
{"Pacific":
[{"start":10,"end":30,"magnitude":7},{"start":31,"end":39,"magnitude":9},{"start":40,"end":60,"magnitude":5},{"start":80,"end":90,"magnitude":3},],
"Atlantic":
[{"start":10,"end":30,"magnitude":3},{"start":40,"end":60,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Indian":
[{"start":0,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":650,"end":90,"magnitude":3}]
},
"2002":{"Pacific":
[{"start":10,"end":30,"magnitude":7},{"start":40,"end":60,"magnitude":5},{"start":80,"end":90,"magnitude":3}],
"Atlantic":
[{"start":10,"end":60,"magnitude":3},{"start":40,"end":60,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Indian":
[{"start":0,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":65,"end":90,"magnitude":3}]
},
"2003":{"Pacific":
[{"start":5,"end":30,"magnitude":7},{"start":40,"end":70,"magnitude":5},{"start":80,"end":90,"magnitude":3}],
"Atlantic":
[{"start":5,"end":30,"magnitude":3},{"start":40,"end":45,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Indian":
[{"start":10,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":65,"end":90,"magnitude":3}]
}
},
"Crime Data":
{"2001":
{"New York":
[{"start":10,"end":30,"magnitude":7},{"start":40,"end":60,"magnitude":5},{"start":80,"end":90,"magnitude":3}],
"Atlanta":
[{"start":10,"end":60,"magnitude":3},{"start":40,"end":60,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Bangor":
[{"start":0,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":65,"end":90,"magnitude":3}]
},
"2002":{"New York":
[{"start":10,"end":30,"magnitude":7},{"start":40,"end":60,"magnitude":5},{"start":80,"end":90,"magnitude":3}],
"Atlanta":
[{"start":10,"end":30,"magnitude":3},{"start":40,"end":60,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Bangor":
[{"start":0,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":65,"end":90,"magnitude":3}]
},
"2003":{"New York":
[{"start":5,"end":30,"magnitude":7},{"start":40,"end":70,"magnitude":5},{"start":80,"end":90,"magnitude":3}, {"start":91,"end":95,"magnitude":8}],
"Atlanta":
[{"start":5,"end":30,"magnitude":3},{"start":40,"end":45,"magnitude":7},{"start":70,"end":90,"magnitude":3}],
"Bangor":
[{"start":10,"end":30,"magnitude":7},{"start":35,"end":60,"magnitude":5},{"start":65,"end":90,"magnitude":3}]
}
}
}
腳本如下:
var clone = $.extend(true, {}, sample);
//class
function reduceObjectToComponents (obj) {
var r = this
r.keys = []
r.wholeObjects = []
r.root = $.extend(true, {}, obj)
r.dig = function (node) {
if(typeof node === 'object'){
if(Object.keys(node).length>0 && typeof node.start === 'undefined' && node!=null){
r.keys.push(Object.keys(node)[0])
r.dig(r.getLatest())
} else {
r.storeWhole(node, r.keys)
}
}
}
r.storeWhole = function (dataObj, path) {
var wholeObject = {}
wholeObject.dimension1 = path[0];
wholeObject.dimension2 = path[1];
wholeObject.dimension3 = path[2];
wholeObject.datum = dataObj;
console.log(wholeObject)
r.wholeObjects.push(wholeObject)
r.removeLowest()
console.log(r.root)
console.log(r.keys)
r.keys = []
r.dig(r.root)
}
r.removeLowest = function() {
var obj = r.root
for (var i = 0; i < r.keys.length; i++) {
obj = obj[r.keys[i]]
}
console.log(obj)
obj = null
console.log(obj)
}
r.getLatest = function() {
var obj = r.root
for (var i = 0; i < r.keys.length; i++) {
obj = obj[r.keys[i]]
}
return obj
}
r.dig(obj)
}
var t = new reduceObjectToComponents(clone)