https://github.com/prog-ac/sortable-table/blob/master/assets/users.json
準備
curl https://raw.githubusercontent.com/prog-ac/sortable-table/master/assets/users.json > users.json
jsonの読み込み
const users = require("./users.json")
1. スコア降順でソートして、90点以上の人のみを表示せよ。(この問題はfor文なしで)
[ { name: 'ヤマモト ミカコ', pref: '愛知県', birthday: '1995-05-14', score: 100 }, { name: 'エコダ リョウスケ', pref: '石川県', birthday: '1958-11-19', score: 99 }, { name: 'ナギサ タクマ', pref: '山梨県', birthday: '1950-04-25', score: 98 }, { name: 'ヤマモト アケミ', pref: '石川県', birthday: '1996-09-15', score: 98 }, { name: 'ワタナベ マイ', pref: '埼玉県', birthday: '1968-09-02', score: 97 }, { name: 'サイトウ マアヤ', pref: '茨城県', birthday: '1981-07-26', score: 97 }, { name: 'ヨシモト ハルカ', pref: '長野県', birthday: '1978-04-03', score: 97 }, { name: 'ヤマダ ヨウイチ', pref: '茨城県', birthday: '1956-01-22', score: 97 }, { name: 'アオタ ナオコ', pref: '和歌山県', birthday: '1990-03-28', score: 96 }, { name: 'イシダ タクマ', pref: '青森県', birthday: '1986-03-14', score: 95 }, { name: 'タナカ ヨウコ', pref: '山口県', birthday: '1966-05-22', score: 95 }, { name: 'ムラヤマ ナオト', pref: '東京都', birthday: '1957-01-31', score: 94 }, { name: 'ウノ ジュン', pref: '長野県', birthday: '1940-12-02', score: 94 }, { name: 'ナカムラ ミカコ', pref: '新潟県', birthday: '1941-04-25', score: 93 }, { name: 'ナギサ アキラ', pref: '高知県', birthday: '1955-04-10', score: 93 }, { name: 'コンドウ ハルカ', pref: '大分県', birthday: '1947-11-08', score: 93 }, { name: 'キムラ ナオキ', pref: '広島県', birthday: '1956-09-08', score: 91 }, { name: 'サカモト ヤスヒロ', pref: '三重県', birthday: '1948-02-15', score: 91 }, { name: 'キジマ ヒロシ', pref: '山形県', birthday: '1956-11-09', score: 91 }, { name: 'スギヤマ ナオコ', pref: '三重県', birthday: '1970-04-28', score: 91 } ]
解答例
const users = require("./users.json") const filterdUser = users.filter((user) => user.score >= 90) console.log(filterdUser.sort((a, b) => b.score - a.score))
2. 名前(ファーストネーム)の重複している人数を集計し、人数降順でソートして表示せよ。
ユミコ:12人 ミキ:9人 ハルカ:8人 ナナミ:8人 マイ:8人 サユリ:7人 ナオキ:7人 モモコ:7人 アケミ:6人 ヨウコ:6人 ミノル:6人 マアヤ:6人 シュウヘイ:5人 トモヤ:5人 アキラ:5人 ジュン:5人 ユウキ:5人 タクマ:5人 クミコ:4人 チヨ:4人 ミカコ:4人 ヤスヒロ:4人 ヨウイチ:4人 リョウスケ:4人 カナ:4人 ナオコ:4人 ハナコ:4人 ヒデキ:4人 アスカ:3人 ナオト:3人 カズヤ:3人 ユイ:3人 ショウタ:3人 カオリ:3人 レイ:3人 マナブ:2人 ソウタロウ:2人 リョウヘイ:2人 ヨウスケ:2人 キョウスケ:2人 ヒロシ:2人 ユウタ:2人 アツシ:1人 サトミ:1人 タロウ:1人 ツバサ:1人 リカ:1人
解答例
const users = require("./users.json") const result = [] for (let i = 0; i < users.length; i++) { const user = users[i] const firstName = user.name.split(" ")[1] let index = result.findIndex((r) => r.firstName === firstName) if (index < 0) { result.push({ firstName: firstName, count: 1 }) } else { result[index].count++; } } result.sort((a, b) => b.count - a.count) for (r of result) { console.log(`${r.firstName}:${r.count}`) }