[英]Javascript Object Structure Without Key
我正在尝试生成一个 object 结构,如下所示:
{nums: {500: 0, 600: 0}}
我有一个 function 循环并返回数字,如 object: 500 & 600 所示。但是,
无论我如何尝试创建像上面这样的 object 结构,它都不起作用。
这就是我有一个 object 数组,如下所示:
const scores = [ {score: 500}, {variant_id: 600} ]
如何循环遍历 object 的分数数组并获得如下结构: 本示例中的数字 0 作为适用于所有分数的值。
{nums: {500: 0, 600: 0}}
我所做的是:
let filteredScores = [];
for (let i = 0; i < scores.length; i++) {
const element = scores[i];
filteredScores.push(element);
}
但是,这不会导致预期的结果。
非常感谢任何见解或输入!
使用reduce()
和Object.values()
的几个想法。
const scores = [ {score: 500}, {variant_id: 600} ]; const result1 = scores.reduce((o, item) => { o.nums[Object.values(item)[0]] = 0 return o; }, {nums: {}}); console.log(result1); // Basically the same thing, just more compact const result2 = { nums: scores.reduce((o, item) => ({...o, [Object.values(item)[0]]: 0}), {})}; console.log(result2);
您可以将Object.fromEntries
与Array#map
结合使用。 (要获取 object 的第一个属性值,您可以检索Object.values
返回的数组的第一个元素。)
const scores = [ {score: 500}, {variant_id: 600} ]; const res = {nums: Object.fromEntries(scores.map(x => [Object.values(x)[0], 0]))}; console.log(res);
var scores = [ {score: 500}, {variant_id: 600} ], result = scores.reduce( (r,o) => ( Object.keys(o).forEach(k => r.nums[o[k]] = 0), r ), {nums:{}} ); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.