私は大きなオブジェクトを持っていますが、オブジェクト内の各要素に同じキーまたはキーの数がありません。最初の要素にすべてのキーがあり、この最初の要素のの値は、各要素のキーとして実際に使用したいもので、要素にこのキーがない場合は空白で埋めます。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",
}
]
、2番目の要素は、「G」及び「H」、第三の要素は、「G」のキーが欠落している間にキー「B」が欠けている、私はそれをインポートし、これはサンプルであります"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
ループを書いたが、私はの複雑さを把握するように見えることはできませんあなたは、Fのみの要素を反復処理することができ....
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!あなたは明らかに正しいです。それでもやってはいけない。あなたが将来に誘惑されているなら、 - )... *静かに逃げる*。 –