以前斷斷續續刷過一段時間的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);