为了账号安全,请及时绑定邮箱和手机立即绑定

javascript中的key:value这种东西该怎么处理

javascript中的key:value这种东西该怎么处理

隔江千里 2018-11-30 14:11:12
最近遇到了一个算法题,要求对一个key:value这样的数组,根据value值对对key进行排序(这里的value值可以指多行),一个酒店的评分系统的逻辑。名称 卫生 用户体验 安全性A x1 y1 z1B x2 y2 z2... ... ... ... 类似于上面的这样子的,然后先对卫生排序,卫生排完,选出卫生排序得出的前三名,选择前面选出的前三民,根据用户体验排序,选出用户体验前两名,根据安全性排序,选出安全性的第一名。最后输出这个第一名。感觉其实都差不多,但是资料也查过,map函数也看了,但是还是理解不了到底该怎么搞,求大佬赐教一波。(ps:明明感觉自己算法算不上差啊,可是每次遇到稍微复杂一点的算法就被搞晕了,刚入前端坑不久,基本的js相关的代码都撸过一遍),求大佬解惑。
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

// 随机生成数据

// let rand = () => Math.floor(Math.random() * 100)


// let arr = 'ABCDEFG'.split('').map(e => {

//     return {

//         name: e,

//         health: rand(),

//         experience: rand(),

//         security: rand(),

//     }

// })

// console.log(arr)


// 这是随机生成的一组数据

let arr = [ { name: 'A', health: 67, experience: 78, security: 88 },

  { name: 'B', health: 14, experience: 40, security: 32 },

  { name: 'C', health: 91, experience: 31, security: 64 },

  { name: 'D', health: 7, experience: 64, security: 26 },

  { name: 'E', health: 68, experience: 69, security: 77 },

  { name: 'F', health: 91, experience: 44, security: 43 },

  { name: 'G', health: 61, experience: 44, security: 68 } ]


// 排序

let ret = arr

    .sort((a, b) => {

        return b.health - a.health

    })

    .slice(0, 3)

    .sort((a, b) => {

        return b.experience - a.experience

    })

    .slice(0, 2)

    .sort((a, b) => {

        return b.security - a.security

    })

    .shift()


console.log(ret)

// { name: 'E', health: 68, experience: 69, security: 77 }


查看完整回答
反对 回复 2018-12-07
  • 1 回答
  • 0 关注
  • 1440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号