【发布时间】:2021-11-03 21:35:45
【问题描述】:
下面是我的对象
var data = {
sku: ['1', '2', '3', '4'],
color: [],
season: ['winter', 'summer'],
}
下面是我期待的输出
data = [
{ sku: '1', season: 'winter'},
{ sku: '2', season: 'summer'},
{ sku: '3'},
{ sku: '4'},
]
以下是工作脚本,但不易阅读。如果您有更好的建议,请提出建议。
var data = {
sku: ['1', '2', '3', '4'],
color: [],
season: ['winter', 'summer'],
}
var arr = Object.entries(data)
.filter(item => item[1] && item[1].length) // remove empty values
.sort((x, y) => y[1].length - x[1].length) // bring lengthy value to first
var final = arr[0][1].map((a, index) =>
arr.reduce((b, acc) => ({
...b,
...(acc[1][index] && { [acc[0]]: acc[1][index] }),
}), {})
);
console.log(final);
【问题讨论】:
-
“期待”哪个代码?熟悉how to access and process nested objects, arrays or JSON 以及如何使用create objects 并使用
Object和Array的可用静态和实例方法。 -
@w3debugger ...据我所知,任何合理的尝试都会使您免于投票。但只是放弃 Q 而不表现出努力会适得其反。有些人对此非常严格。但他们大多也愿意,在 OP 相应地编辑 Q 后收回投票。
-
确实,现在这个问题是“给我代码”。表现出你的努力会阻止这种情况。不过,有趣的是,您认为发布您的尝试会导致更多的反对票:/
-
@w3debugger ...出于好奇,您最后提供的示例代码,这是您的第一种方法吗?如果是这样,你为什么不发布它?既然它也能完成它的工作,那么你的实际问题在哪里?我唯一的建议......为自己和他人编写人类可读的代码(一个月后也可以阅读)。
-
@PeterSeliger 我知道如何得到结果,但你可以看到它不可读。这就是为什么我问是否有人可以建议更少和清晰的代码。我在发布代码后编写了代码。 AFAIK 这个平台不仅是发布完美答案的专家和发布答案的专家。看到负面印象让我真的很失望,但最终了解到大多数人的心态......顺便说一句谢谢:)
标签: javascript arrays object lodash transformation