[问题] 请教几个 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
作者: 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