Javascript:根据索引映射两个数组,然后为超出索引的条目分配相同的值
Javascript: Mapping two arrays based on indexes then assign the same value for entries that are out of index
我有一个函数会给出以下结果;
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}
我认为对此类内容使用 reduce
不合适。
您可以使用包含每个玩家和分配点数的对象数组吗?
const result = data.map((user) => ({
...user,
points: points[user.ranking-1] || points[points.length-1]
}))
我有一个函数会给出以下结果;
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}
我认为对此类内容使用 reduce
不合适。
您可以使用包含每个玩家和分配点数的对象数组吗?
const result = data.map((user) => ({
...user,
points: points[user.ranking-1] || points[points.length-1]
}))