如何根据数组中,某个字段的大小,依次赋值?

现在有一个数组

let arr = [
    {num: 3},
    {num: 4},
    {num: 1},
    {num: 2},
    {num: 0}
]

有没有什么简便的方法, 按照num的从大到小依次赋值 level 1-5?

最后得出数据为

let arr = [
    {num: 4, level: 1},
    {num: 3, level: 2},
    {num: 2, level: 3},
    {num: 1, level: 4},
    {num: 0, level: 5}
]

我想到一个比较蠢的,就是 先用sort 自定义函数,将它进行排序, 然后for循环,从1开始 对level依次赋值。

有没有什么一步到位的方式?

阅读 2.8k
2 个回答

歪个楼 一步到位 level=5-num 手动滑稽(我也和你思路一样,mark了等大神)

let arr = [
  { num: 3 },
  { num: 4 },
  { num: 1 },
  { num: 2 },
  { num: 0 },
]

const seq = arr
  .map(({ num }) => ({ num, level: arr.length - num }))
  .sort((objA, objB) => objA.level - objB.level)
console.log(seq)

我来炫技(一个自嘲

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进