一个关于房间安楼层分组的面试题

看代码:

let arrs = [101,403,209,301,102,105,201,203,103,104,409,204,202,307]
let results =[
    [101,102,103,104,105],
    [201,203,204,202,209],
    [301,307],
    [403,409]
]

arrs数组中存储的是一些列房间号码,需要按照楼层将为其格式化,得到的结果如results数组。

阅读 1.2k
1 个回答
let arrs = [101,403,209,301,102,105,201,203,103,104,409,204,202,307];

Object.values(arrs.reduce((r, i) => ((r[(''+i)[0]] = r[(''+i)[0]] || []).push(i), r), {}))

可维护版本:

let arrs = [101,403,209,301,102,105,201,203,103,104,409,204,202,307];
let resultMap = arrs.reduce((ret, item) => {
    let level = String(item)[0];
    ret[level] = ret[level] || [];
    ret[level].push(item);
    return ret;
}, {});

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