У меня есть список свойств, подобных этому
[{"ID":"0"},{"Day":""},{"Time":""},{"Type":"Both"},{"Status":"false"},
{"ID":"0"},{"Day":""},{"Time":""},{"Type":"Both"},{"Status":"false"}]
Я хотел бы преобразовать их в нечто подобное
[{"ID":"0","Day":"","Time":"","Type":"Both","Status":"false"},
{"ID":"0","Day":"","Time":"","Type":"Both","Status":"false"}]
Это одна из проблем, с которыми я сталкиваюсь почти каждый раз, превращая форму в json и отправляя ее контроллеру сложного типа.
Вы можете проверить, содержит ли объект ID
ключа и построить новый объект со всеми следующими объектами.
var data = [{ ID: "0" }, { Day: "" }, { Time: "" }, { Type: "Both" }, { Status: "false" }, { ID: "0" }, { Day: "" }, { Time: "" }, { Type: "Both" }, { Status: "false" }],
result = data.reduce(function (r, o) {
if ('ID' in o) {
r.push(Object.assign({}, o));
} else {
Object.assign(r[r.length - 1], o);
}
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Это один странный вход,..
Со следующим я предполагаю, что всегда есть идентификатор, и он на первом месте. Поскольку эта структура данных не имеет способа расщепления свойств.
var a = [{"ID":"0"},{"Day":""},{"Time":""},{"Type":"Both"},{"Status":"false"},
{"ID":"0"},{"Day":""},{"Time":""},{"Type":"Both"},{"Status":"false"}];
var
ret = [],
c = null;
a.forEach((r) => {
if (r.ID) { c = {}; ret.push(c); }
let k = Object.keys(r)[0];
c[k] = r[k];
});
console.log(ret);