我有一个像这样的属性列表
[{"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并将其提交给具有复杂类型的控制器时面临的一个问题。
答案 0 :(得分:2)
您可以检查对象是否包含密钥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; }
答案 1 :(得分:1)
这是一个奇怪的输入,..
以下我假设总有一个ID,它首先出现。由于该数据结构无法拆分属性。
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);