看板 Ajax 關於我們 聯絡資訊
身邊沒有人寫 JavaScript,好不容易找到這裡,希望大家可以幫幫忙 QQ ,實在是 找不到人問了 1. arr = [{name:'sam', age:16}, {name:'may', age:20}] 使輸出為 {sam: 16, may: 20} 2. 找出最靠近 50 的數字並輸出 const arr = {40, 32, 55, 16, 25, 74, 22, 13, 27, 41} 輸出為 {55, 41, 40} 先謝謝大家了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 47.211.221.178 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1632785389.A.D65.html
icydream: 第1題可用reduce 09/28 08:25
icydream: 第2題是[],不是大括號(題目打錯了) 09/28 08:26
icydream: 最靠近50是要靠多近呢? 09/28 08:27
laechan: 第一題,先土法煉鋼,再看能否寫進內函數? 09/28 10:17
laechan: 第一題先宣告一個比方 copy={}; 09/28 10:28
laechan: arr.forEach(function(a){copy[a["name"]]=a["age"];}); 09/28 10:28
laechan: 這樣 copy 的輸出結果: copy={"sam":16,"may":20} 09/28 10:28
laechan: 第二題,可以讓每個元素與50相減後的值當key值,arr內的元 09/28 11:09
laechan: 素當對映值,比方 {"10":40, "18":32, "-5":55, ... } 09/28 11:09
laechan: 然後對這東西的Object.keys值做sort,用Math.abs比大小 09/28 11:10
laechan: return c1 > c2 ? 1 : c1 < c2 ? -1 : 0; 09/28 11:10
laechan: 這樣比完後 "-5" 就會在最前面, 再來是 "10", 再來 "11" 09/28 11:10
laechan: 則叫出 "-5" 對映的值 55 就行了 09/28 11:11
laechan: https://i.imgur.com/ZMhDw4O.jpg 09/28 11:12
laechan: 若要更簡短就是arr.forEach(function(a){直接在裡面做比 09/28 11:16
laechan: 大小(abs)及排序,這樣應該更快,我改一下 09/28 11:16
laechan: https://i.imgur.com/3E138hy.jpg 09/28 11:22
laechan: 要得出前 3 個的3這個數字,或可用arr.length的開根號整數 09/28 11:24
lingsyou: 真的非常謝謝大家!! 09/29 00:33
lingsyou: 第一題 我試了 reduce 看來是可以的!https://i.imgur.c 09/29 00:45
lingsyou: om/BadTE34.jpg 09/29 00:45
lingsyou: https://i.imgur.com/R1bvA7P.jpg 09/29 00:46
lingsyou: 第二題謝謝 laechan 大大的方法! 09/29 00:47
GlobeTrekker: 第一題用map更適合其問題的本質 09/29 03:19
BugofBook: 輸入是array輸出是object,不能用map只能用reduce 09/29 15:43
GlobeTrekker: 喔喔喔喔喔,對吼,謝謝! 09/29 18:59
icydream: https://imgur.com/a/Zn1jWOu 10/01 12:29
icydream: reduce這樣使用比較好一些 10/01 12:29
GlobeTrekker: 推樓上 10/01 15:34
eight0: 用 Object.entries https://is.gd/WcG1rX 10/01 20:45