【发布时间】:2019-04-23 06:39:48
【问题描述】:
我有一个 JSON 对象,我想将其拆分为多个对象。我尝试将单个 JSON 对象转换为数组。如果键不存在,即meal1、meal2 等,我无法找出分解单个对象的模式。我什至不确定这是否是最好的方法。感谢您在正确方向上的任何帮助或指示!
之前
{
"fullName1" : "John Doe",
"attendance1" : 1,
"meal1" : "salmon",
"fullName2" : "Jane Doe",
"attendance2" : 0
}
想要的结果
{
"fullName" : "John Doe",
"attendance" : 1,
"meal" : "salmon"
},
{
"fullName" : "Jane Doe"
"attendance" : 0
}
就我的尝试而言,这就是我已经走了多远:
const entries = [...elements];
// check for valid elements
const isValidElement = element => {
return element.name && element.value;
};
const isValidValue = element => {
return (!['radio'].includes(element.type) || element.checked);
};
const formToJSON = elements =>
[].reduce.call(elements, (data, element) => {
if (isValidElement(element) && isValidValue(element)) {
data[element.name] = element.value;
}
return data;
}, {});
//
const singleArray = formToJSON(entries);
【问题讨论】:
-
密钥是否已知?你在哪里尝试自己解决这个问题?我们不只是分发解决方案。 (此外,没有“JSON 对象”之类的东西;您显示的是 JavaScript 对象文字)
-
这不是一个数组。此外,您拆分对象的标准似乎还不清楚。是属性名的后缀吗?
-
这是一个对象,不是数组,所以不能使用你提到的任何数组方法。事实上,由于它只是一个没有子结构的普通对象,我认为您基本上必须手动执行此操作。
-
@ChrisG 感谢您的反馈。我尝试使用
Array.from()将 JSON 转换为数组并尝试从那里进行操作。
标签: javascript arrays ecmascript-6 ecmascript-5