Javascript 格式化动态json数组
我有一个json数组,如下所示:Javascript 格式化动态json数组,javascript,angularjs,json,Javascript,Angularjs,Json,我有一个json数组,如下所示: Maindata=[ {"name":"string1"}, {"name":"string2"}, {"name":"string3"} ]; 我需要的是以下类型的数组: data=[ { "name":"string1", "name":"string2", "name":"string3" } ]; 有谁能帮我从原始数组中获取所需json的方法吗。 (注意:maindata是动态形成的json数组,这就是为什么
Maindata=[
{"name":"string1"},
{"name":"string2"},
{"name":"string3"}
];
我需要的是以下类型的数组:
data=[
{
"name":"string1",
"name":"string2",
"name":"string3"
}
];
有谁能帮我从原始数组中获取所需json的方法吗。
(注意:maindata是动态形成的json数组,这就是为什么它的结构是这样的)
提前感谢您可以使用或迭代Maindata
对象的项,对于每个项,您可以迭代其键(使用),并将数据分组到新结构中。(请参阅下面的代码片段)
使用Array.forEach的解决方案
var主数据=[
{“name1”:“string1”},
{“name2”:“string2”},
{“name3”:“string3”}
];
var result={};
var newMaindata=[];
Maindata.forEach(功能(el){
Object.keys(el).forEach(函数(key){
结果[键]=el[键];
});
});
newMaindata.push(结果);
console.log(newMaindata)
您可以使用或迭代Maindata
对象的项,对于每个项,您可以迭代其键(使用),并将数据分组到新结构中。(请参阅下面的代码片段)
使用Array.forEach的解决方案
var主数据=[
{“name1”:“string1”},
{“name2”:“string2”},
{“name3”:“string3”}
];
var result={};
var newMaindata=[];
Maindata.forEach(功能(el){
Object.keys(el).forEach(函数(key){
结果[键]=el[键];
});
});
newMaindata.push(结果);
console.log(newMaindata)代码>您可以使用并扩展数组元素
var数组=[{name1:string1},{name2:string2},{name3:string3}],
object=object.assign({},…数组);
console.log(对象)代码>您可以使用并扩展数组元素
var数组=[{name1:string1},{name2:string2},{name3:string3}],
object=object.assign({},…数组);
console.log(对象)代码>使用,您可以执行以下操作
var Maindata=[{
“名称1”:“字符串”
}, {
“名称2”:“字符串”
}, {
“名称3”:“字符串”
}];
var finalObj=Maindata.reduce((acc,cur)=>{
分配对象(acc、cur);
返回acc;
}, {})
console.log(finalObj)代码>使用,您可以执行以下操作
var Maindata=[{
“名称1”:“字符串”
}, {
“名称2”:“字符串”
}, {
“名称3”:“字符串”
}];
var finalObj=Maindata.reduce((acc,cur)=>{
分配对象(acc、cur);
返回acc;
}, {})
console.log(finalObj)代码>我认为您想要的输出不是有效的对象为什么数据不是对象
?为什么会有一个数组
?您的第二个JSON不是有效的JSON,因为对象不能有重复的名称。正如我所说,main数据是通过创建html元素动态获取的。例如单击按钮以添加文本框。所以每个元素的键保持不变。每个对象的值字符串都不同。请查看我更新的问题,jsonI不认为您想要的输出是有效的对象。为什么数据不是对象?为什么会有一个数组
?您的第二个JSON不是有效的JSON,因为对象不能有重复的名称。正如我所说,main数据是通过创建html元素动态获取的。例如单击按钮以添加文本框。所以每个元素的键保持不变。每个问题的值字符串都不同。请查看我更新的问题,如果名称和字符串每次都是唯一的,则jsonits有效,正如您的答案所示。但在我的例子中,“name”在每个元素上保持不变,所以它只返回最后一个元素。你能更新你的答案吗。谢谢,一个对象不能有两个相同名称的属性。如果名称和字符串每次都是唯一的,那么它就会起作用。但在我的例子中,“name”在每个元素上保持不变,所以它只返回最后一个元素。你能更新你的答案吗。谢谢,一个对象不能有两个同名属性。