Ich habe dieses JSONWie zu verändern Array innerhalb eines Objekts
{
"Entries": [{
"JobId": 7322,
"DayOfTheWeek": "Wednesday",
"Punchouts": ["2016-05-05T09:50:00", "2016-05-05T12:20:00"],
"PunchIns": ["2016-05-05T10:10:00", "2016-05-05T12:40:00"]
}, {
"JobId": 7322,
"DayOfTheWeek": "Thursday",
"Punchouts": ["2016-05-05T09:50:00"],
"PunchIns": ["2016-05-05T09:40:00"]
}]
}
ich es
{
"Entries": [{
"JobId": 7322,
"DayOfTheWeek": "Wednesday",
"Punchout1": "2016-05-05T09:50:00",
"Punchout2": "2016-05-05T12:20:00",
"PunchIn1": "2016-05-05T10:10:00",
"PunchIn2": "2016-05-05T12:40:00"
}, {
"JobId": 7322,
"DayOfTheWeek": "Thursday",
"Punchout1": "2016-05-05T09:50:00",
"Punchout2": "",
"PunchIn1": "2016-05-05T09:40:00"
"PunchIn2": "",
}]
}
ändern würde ich möchte das Array kondensieren. Das Array max Länge = 2. Selbst wenn die Länge 0/1 ist, sollte das Array leere Zeichenfolge für PunchOut1/PunchOut2 und PunchIn1/PunchIn2
es wie folgt implementiert.
for (var i = 0; i < data.Entries.length; i++) {
var entry = data.Entries[i];
if (entry["Punchouts"].length == 0) {
entry["PunchOut1"] = "";
entry["PunchOut2"] = "";
}
if (entry["Punchouts"].length == 1) {
entry["PunchOut1"] = entry["Punchouts"][0];
entry["PunchOut2"] = "";
}
if (entry["Punchouts"].length == 2) {
console.log("in");
entry["PunchOut1"] = entry["Punchouts"][0];
entry["PunchOut2"] = entry["Punchouts"][1];
}
delete entry["Punchouts"];
// do same for PunchIns.
}
Fiddle: https://jsfiddle.net/codeandcloud/rpgx28gy/
Was wäre eine optimierte (lodash vorzugsweise) Art und Weise?
Wenn Sie nach Optimierungen fragen, suchen Sie nach präziseren Code oder nach Speicher und/oder CPU-Optimierung? – Alpha
Ihre gewünschte Ausgabe ist nicht "kondensiert" - es ist eigentlich * mehr * Zeichen. – nnnnnn
@Alpha: lesen optimiert als besser lesbar, weniger Code. – naveen