【发布时间】:2021-09-30 08:12:17
【问题描述】:
我在发布此问题时查看了多个网站,包括通过建议的答案,所以如果在其他地方得到回答,请原谅我。我对 JavaScript(和一般编码)非常陌生。我正在做一个“加权彩票”项目,我有一种方法我确信会奏效,但我被困在一个特定的点上。
我有一个对象,其中包含作为对象键的结果以及特定结果将作为整数类型的对象值生成的次数。具体来说:
const weights = {
'win': 5,
'loss': 10,
'tie': 3
}
我想根据对象键的关联值将对象键多次推送到名为“结果”的数组中。对于上面的示例,它会生成一个数组,其中列出了 5 次“赢”、“输”10 次和“平局”3 次。
我遇到过 .fill 方法,但它似乎在这种情况下不起作用,我希望对象项的数量是动态的(包括它们的数量和它们的值 - 即具有15 个不同的“结果”,每个结果都有不同的值)。
有什么建议吗?感谢大家提供这么棒的资源!
【问题讨论】:
-
创建数组:
const outcomes = [];现在迭代并推送Object.entries(weights).forEach(([key, weight) => { for (let i = 0; i < weight; i++) outcomes.push(key); }); -
[].concat(...Object.keys(weights).map(k => Array(weights[k]).fill(k)))
标签: javascript arrays javascript-objects