我有一个大对象,并且对象中的每个元素都不具有相同的键或键数。第一个元素具有所有的键,并且这个第一个元素的值是我想实际使用的每个元素的键,填充元素没有此键的空白。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!你显然是正确的。仍然不应该这样做。如果你在未来受到诱惑; - )* *悄悄溜走*。 –