繁体   English   中英

Javascript Object 结构无键

[英]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.fromEntriesArray#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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM