我有一個大對象,並且對象中的每個元素都不具有相同的鍵或鍵數。第一個元素具有所有的鍵,並且這個第一個元素的值是我想實際使用的每個元素的鍵,填充元素沒有此鍵的空白。Javascript根據另一個對象的鍵和值寫入新對象
我可以將我的大腦包裹在需要發生的事情上,但我無法弄清楚如何對它進行編碼。這是樣品我導入:
[
{
"A": "Name",
"B": "Type",
"C": "Company",
"D": "Year",
"E": "Alt1",
"F": "Name1",
"G": "Alt2",
"H": "Name2",
"I": "Notes"
},
{
"A": "Skittles",
"C": "Mars",
"D": 0,
"E": "Cadbury",
"F": "Sour Patch Kids",
"I": "CLEAN"
},
{
"A": "Love",
"B": "Chocolate",
"C": "Dove",
"D": 0,
"E": "0",
"F": "0",
}
]
在這個例子中,所述第二元素缺少鍵「B」,「G」和「H」,而第三個元素缺少鍵「G」, 「H」和「I」。因此,使用的第一個元素的鍵A through I
作爲主模板,我想改寫新對象,看起來像這樣:
[
{
"Name": "Skittles",
"Type": "",
"Company": "Mars",
"Year": 0,
"Alt1": "Cadbury",
"Name1": "Sour Patch Kids",
"Alt2": "",
"Name2": "",
"Notes": "CLEAN"
},
{
"Name": "Love",
"Type" : "Chocolate",
"Company": "Dove",
"Year": 0,
"Alt1": "",
"Name1": "",
"Alt2": "",
"Name2": "",
"Notes": ""
}
]
我已經寫了幾個for
循環,但我似乎無法把握的複雜性這...這是據我已經得到了:
a = [];
b = [];
new_keys = [];
/* Capture the new keys */
for(var v in user_file[0]) {
if(user_file[0].hasOwnProperty(v)) {
new_keys.push(user_file[0][v]);
}
}
/* user_file is the object I pasted above... */
for (var i = 0 ; i<user_file.length; i++) {
/* write the b object */
/* then push that object into a */
a.push(b);
/* Empty out b */
b = [];
}
我不知道該怎麼寫b[]
對象....
首先,[不要對數組使用'for..in'循環](http://stackoverflow.com/q/500504/215552)。 –
@MikeMcCaughan他不是。 'user_file [0]'是一個對象,而不是一個數組。 – Barmar
@Barmar D'oh!你顯然是正確的。仍然不應該這樣做。如果你在未來受到誘惑; - )* *悄悄溜走*。 –