[問題] 請教幾個 JavaScript 的問題

作者: lingsyou   2021-09-28 07:29:45
身邊沒有人寫 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}
先謝謝大家了!
作者: icydream (巧虎)   2021-09-28 08:25:00
第1題可用reduce第2題是[],不是大括號(題目打錯了)最靠近50是要靠多近呢?
作者: laechan (揮淚斬馬雲)   2021-09-28 10:17:00
第一題,先土法煉鋼,再看能否寫進內函數?第一題先宣告一個比方 copy={};arr.forEach(function(a){copy[a["name"]]=a["age"];});這樣 copy 的輸出結果: copy={"sam":16,"may":20}第二題,可以讓每個元素與50相減後的值當key值,arr內的元素當對映值,比方 {"10":40, "18":32, "-5":55, ... }然後對這東西的Object.keys值做sort,用Math.abs比大小return c1 > c2 ? 1 : c1 < c2 ? -1 : 0;這樣比完後 "-5" 就會在最前面, 再來是 "10", 再來 "11"則叫出 "-5" 對映的值 55 就行了https://i.imgur.com/ZMhDw4O.jpg若要更簡短就是arr.forEach(function(a){直接在裡面做比大小(abs)及排序,這樣應該更快,我改一下https://i.imgur.com/3E138hy.jpg要得出前 3 個的3這個數字,或可用arr.length的開根號整數
作者: lingsyou   2021-09-29 00:33:00
真的非常謝謝大家!!第一題 我試了 reduce 看來是可以的!https://i.imgur.com/BadTE34.jpghttps://i.imgur.com/R1bvA7P.jpg第二題謝謝 laechan 大大的方法!
作者: GlobeTrekker   2021-09-29 03:19:00
第一題用map更適合其問題的本質
作者: BugofBook (數學書蟲)   2021-09-29 15:43:00
輸入是array輸出是object,不能用map只能用reduce
作者: GlobeTrekker   2021-09-29 18:59:00
喔喔喔喔喔,對吼,謝謝!
作者: icydream (巧虎)   2021-10-01 12:29:00
https://imgur.com/a/Zn1jWOureduce這樣使用比較好一些
作者: GlobeTrekker   2021-10-01 15:34:00
推樓上
作者: eight0 (欸XD)   2021-10-01 20:45:00
用 Object.entries https://is.gd/WcG1rX

Links booklink

Contact Us: admin [ a t ] ucptt.com