编辑:答案不工作,如果有更多的对象在JSON:/如果您可以再看一次,我将非常感激。
我正在尝试分离JSON数组来使用单个数组创建新对象。
null
const objs = [{
id: ["18772729849", "17773133341", "17773173696"],
o: 552750,
g: 2,
p: 5427.37,
f: ["0.07480893", "0.07703563", "0.07160716"],
b: ["76561198311594977", "76561198311424548", "76561198312084911"],
d: ["uYEY1BQ", "jSdgIK5", "lldBCJt"],
},
{
id: ["5122519", "7125125", "124124"],
o: 12440,
g: 412,
p: 4124,
f: ["0.033", "0.0123", "0.412412"],
b: ["76561198124421421", "712412441248", "71241244911"],
d: ["uYasdasd1BQ", "jSasdasdK5", "llfasCJt"],
}
];
null
我的输出应该如下所示:
null
[{
id: ['18772729849'],
o: 552750,
g: 2,
p: 5427.37,
f: ['0.07480893'],
b: ['76561198311594977'],
d: ['uYEY1BQ']
},
{
id: ['17773133341'],
o: 552750,
g: 2,
p: 5427.37,
f: ['0.07703563'],
b: ['76561198311424548'],
d: ['jSdgIK5']
},
{
id: ['17773173696'],
o: 552750,
g: 2,
p: 5427.37,
f: ['0.07160716'],
b: ['76561198312084911'],
d: ['lldBCJt5']
},
{
id: ['5122519'],
o: 12440,
g: 412,
p: 4124,
f: ['0.033'],
b: ['76561198124421421'],
d: ['uYasdasd1BQ']
},
{
id: ['7125125'],
o: 12440,
g: 412,
p: 4124,
f: ['0.0123'],
b: ['712412441248'],
d: ['jSasdasdK5']
},
null
所以“o”,“g”,“p”和原来的对象一样。
解决方案:
null
const objs = [{ id: ["18772729849", "17773133341", "17773173696"], o: 552750, g: 2, p: 5427.37, f: ["0.07480893", "0.07703563", "0.07160716"], b: ["76561198311594977", "76561198311424548", "76561198312084911"], d: ["uYEY1BQ", "jSdgIK5", "lldBCJt"],},{ id: ["5122519", "7125125", "124124"], o: 12440, g: 412, p: 4124, f: ["0.033", "0.0123", "0.412412"], b: ["76561198124421421", "712412441248", "71241244911"], d: ["uYasdasd1BQ", "jSasdasdK5", "llfasCJt"]}];
var result = objs.flatMap(obj=>{
return Array.from({length:obj.id.length},(_,i)=>Object.fromEntries(
Object.entries(obj).map(([key, val])=>[key, Array.isArray(val) ? [val[i]] : val])
));
});
console.log(result);
null
您可以通过映射键值对来获取键值对的fromentries
,并且可以根据id
属性的长度使用array.from
来生成新数组。 下面是我的尝试:
null
const objs = [{ id: ["18772729849", "17773133341", "17773173696"], o: 552750, g: 2, p: 5427.37, f: ["0.07480893", "0.07703563", "0.07160716"], b: ["76561198311594977", "76561198311424548", "76561198312084911"], d: ["uYEY1BQ", "jSdgIK5", "lldBCJt"],},{ id: ["5122519", "7125125", "124124"], o: 12440, g: 412, p: 4124, f: ["0.033", "0.0123", "0.412412"], b: ["76561198124421421", "712412441248", "71241244911"], d: ["uYasdasd1BQ", "jSasdasdK5", "llfasCJt"]}];
var result = objs.flatMap(obj=>{
return Array.from({length:obj.id.length},(_,i)=>Object.fromEntries(
Object.entries(obj).map(([key, val])=>[key, Array.isArray(val) ? [val[i]] : val])
));
});
console.log(result);
实际上,只需使用.map()
null
let data = {
id: [ '18772729849', '17773133341', '17773173696' ],
o: 552750,
g: 2,
p: 5427.37,
f: [ '0.07480893', '0.07703563', '0.07160716' ],
b: [ '76561198311594977', '76561198311424548', '76561198312084911' ],
d: [ 'uYEY1BQ', 'jSdgIK5', 'lldBCJt' ]
}
let result = data.id.map((el,i) => {
return {
id: [el],
o: data.o,
g: data.g,
p: data.p,
f: [data.f[i]],
b: [data.b[i]],
d: [data.d[i]]
}
})
console.log(result);
使用object.entries
和map
null
const objs = [{
id: ["18772729849", "17773133341", "17773173696"],
o: 552750,
g: 2,
p: 5427.37,
f: ["0.07480893", "0.07703563", "0.07160716"],
b: ["76561198311594977", "76561198311424548", "76561198312084911"],
d: ["uYEY1BQ", "jSdgIK5", "lldBCJt"],
}];
const res = objs.map(obj => Object.fromEntries(
Object.entries(obj).map(([key, val]) => (Array.isArray(val) ? [key, [val[0]]] : [key, val]))
));
console.log(res);