以前断断续续刷过一段时间的codewars,虽然本身算法依旧菜鸡,不过却锻炼了对一些API的操做。 所以想作一个系列,之后坚持在codewars上刷题。
(想锻炼算法仍是力扣好一些,不过已经习惯这里了^__^)javascript
题目连接java
/* 大概意思就是给你一个对象,对象的属性是“rank”,值是“honor”,写一个函数返回属性和值最接近的那个键值对的键名。 */ Example rank honor users = { 1 => 93, 10 => 55, 15 => 30, 20 => 19, <--- nexus 23 => 11, 30 => 2 } function nexus(users){ //首先用Object.keys()方法返回全部可枚举属性,并将字符转为数字。 let arr = Object.keys(users).map(Number); //而后按规则对数组进行排序 arr.sort((a, b) => { //先计算属性“rank”和值“honor”的差值 let valueA = Math.abs(a - users[a]); let valueB = Math.abs(b - users[b]); //若是差值相同,则按属性“rank”排序 if (valueA === valueB) return a - b; //不然按照差值排序 return valueA - valueB; }); //返回数组第一项 return arr[0]; } // 另有reduce函數写法 const nexus = users => +Object.keys(users).reduce( (a,e) => Math.abs(e - users[e]) < Math.abs(a - users[a]) ? e : a);