【问题标题】:Javascript: Mapping two arrays based on indexes then assign the same value for entries that are out of indexJavascript:根据索引映射两个数组,然后为超出索引的条目分配相同的值
【发布时间】:2021-07-27 06:38:53
【问题描述】:

我有一个函数会给出以下结果;

const points = [10,5,2];

const data = 
[{name:"John",ranking:1},{name:"Sally",ranking:2},{name:"Tom",ranking:3},
{name:"Harry",ranking:4},{name:"Jess",ranking:5},{name:"Kelly",ranking:6}];

const result = data.reduce((result,{name,rank} => 
(result[name]=points[rank-1],result),{});

console.log(result);

{"John": 10,"Sally": 5,"Tom": 2,"Harry": undefined, "Jess": undefined ,"Kelly": undefined}

我希望所有排名第 3 或以上的玩家都获得数组 points 的最后一个值,即 2,而不是未定义,我该如何修改函数以实现以下结果?谢谢!

{"John": 10,"Sally": 5,"Tom": 2,"Harry": 2,"Jess": 2,"Kelly": 2}

【问题讨论】:

  • 您是指索引中的Math.min(rank, points.length) - 1 吗?

标签: javascript arrays mapping reduce


【解决方案1】:

我认为将reduce 用于此类内容是不合适的。 你可以接受包含每个玩家和分配点的对象数组吗?

const result = data.map((user) => ({
  ...user,
  points: points[user.ranking-1] || points[points.length-1]
}))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-10-15
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-11
  • 2014-12-30
相关资源
最近更新 更多