好的,所以我有一個對象的搜索結果數組,其中一個對象屬性值(顯示值)與搜索匹配。該陣列的結構如下,並且可以包含任意數量的不同的對象:如何創建對象的對象鍵的可變對象鍵?
results = [
{
day: value,
time: value,
show: value,
sid: value,
network: value,
title: value,
ep: value,
link: value,
}
];
我試圖將所有結果到一個大對象,合併任何日期或時間具有相同的價值。但是,我不能單純地看每一天或每個時間的價值。例如,如果星期二的晚上9點,我還需要保留星期一晚上9點。
要做到這一點,我想創建一個新的對象結構,像這樣:
for (var i=0; i<results.length; i++) {
var uniqtime = results[i]["time"];
var uniqshow = results[i].show;
uniqresults[results[i].day] = {
uniqtime: {
uniqshow: {
sid: results[i].sid,
network: results[i].network,
title: results[i]["title"],
ep: results[i].ep,
link: results[i]["link"]
}
}
};
}
但顯然這不會因爲變量子對象鍵名稱被視爲字符串工作。
如果我不是試圖創建變量子對象,如/鍵,以便:
for (var i=0; i<obj.length; i++) {
uniqresults[results[i].day] = {};
uniqresults[results[i].day][results[i]["time"]] = {};
uniqresults[results[i].day][results[i]["time"]][results[i].show] = {
sid: obj[i].sid,
network: results[i].network,
title: results[i]["title"],
ep: results[i].ep,
link: results[i]["link"]
};
}
我確實可以創造適當的鍵名,但我不得不宣佈一個空物體來定義每個鍵(uniqresults[obj[i].day] = {}
& uniqresults[obj[i].day][obj[i]["time"]] = {}
)。如果我不這樣聲明,它不會讓我插入我需要的其他子鍵/值。但是,像這樣聲明不允許我正確地合併結果數組,因爲每次讀取新的結果對象時,我基本上都會清空子鍵名稱!
也許我正在使這個比它應該更復雜。也許有更簡單的方法或方式強調或jQuery可以簡化我手頭的任務。無論如何,我現在非常渴望得到妥善的解決方案。
很好地使用中間變量來避免長嵌套數組訪問。 – IMSoP