Javascript 如何通过组变量更改JSON结构?
我正在尝试更改JSON结构,以便推送到我的数据库 我的旧JSON:Javascript 如何通过组变量更改JSON结构?,javascript,arrays,json,algorithm,Javascript,Arrays,Json,Algorithm,我正在尝试更改JSON结构,以便推送到我的数据库 我的旧JSON: [ {"name": "nameGallery"}, {"img": "1.jpg"}, {"img": "2.img"} ] [ { "name": "nameGallery", "Images": [ {"img": "1.jpg"}, {"img": "2.i
[
{"name": "nameGallery"},
{"img": "1.jpg"},
{"img": "2.img"}
]
[
{
"name": "nameGallery",
"Images": [
{"img": "1.jpg"},
{"img": "2.img"}
]
}
]
我想将“img”变量分组为“Images”数组,如下所示:
[
{"name": "nameGallery"},
{"img": "1.jpg"},
{"img": "2.img"}
]
[
{
"name": "nameGallery",
"Images": [
{"img": "1.jpg"},
{"img": "2.img"}
]
}
]
我正在尝试使用object.assign来管理它,但我不知道它出错的原因。
function getData() {
fetch('text/upload.json').then((res) => res.json())
.then((data) => {
console.log(data);
data = data.map(o => Object.assign({}, o,
{ Images: o.Images.map(({ img }) => ({ img: img })) }
));
})
}
我的结果是:
在您的解决方案中,您正在调用
.map
,它将为初始数据中的每个数组项创建一个数组项
正如您所描述的,结果是一个对象,而不是一个对象数组。因此,请看以下内容:
const数据=[{
名称:'nameGallery',
},
{
img:'1.jpg',
},
{
img:'2.img',
},
];
//您希望使用所有其他对象创建新对象
const ret=数据减少((tmp,x)=>{
//如果下面的键是“img”,我们将对象推入“Images”
//void 0表示未定义
如果(x.img!==void 0){
tmp.Images.push(x);
返回tmp;
}
//如果钥匙不是“img”
//我们将密钥复制到tmp中
返回{
…tmp,
…x,
};
}, {
//在此处初始化“Images”键它不会被未定义
//在推送第一个数据时
图像:[],
});
控制台日志(ret)代码>您可以尝试以下方法:
function getData() {
fetch('text/upload.json').then((res) => res.json())
.then((data) => {
const name = data.find(o => !!o.name);
return {
name: name.name,
Images: data.filter(o => !!o.img)
};
})
}
您确定数据有值吗?console.log(数据)显示的是什么?@basic可能是o.Images
这是未定义的
。这是因为o对象中没有名为Images的属性。另一个问题是,您需要显示更真实的数据示例,以便有人为您提供更好的答案。您能否在数组中显示原始JSON,其中包含比您这里更多的信息?@asiby谢谢,下次,我会更关心真实的数据样本。非常感谢,我得到了:)