Closed4

辞書データをソートするための自作関数

exitexit

とりあえず,汚いけどできた.本当に汚いな...

c_rank_dictionary_step3.js
const n = Number(lines[0]);
  const name_list = lines
    .slice(1, n + 1)
    .map((row) => row.split(" "))
    .map((items) => {
      let obj = {};
      items.forEach((element, index) => {
        obj["name"] = element;
        obj["damage"] = 0;
      });
      return obj;
    });
  const m = Number(lines[n + 1]);
  const damage_list = lines
    .slice(n + 2, n + m + 2)
    .map((row) => row.split(" "))
    .map((items) => {
      let obj = {};
      items.forEach((element, index) => {
        if (index == 0) obj["name"] = element;
        if (index == 1) obj["damage"] = Number(element);
      });
      return obj;
    });

  function compareStrings(a, b) {
    if (a < b) {
      return -1;
    } else if (a > b) {
      return 1;
    }
    return 0;
  }

  function dictionarySort(n, objects) {
    let j, tmp;
    for (let i = 1; i < n; i++) {
      if (objects[i]["name"] !== undefined) {
        tmp = objects[i];
        j = i - 1;
        while (j >= 0 && compareStrings(objects[j]["name"], tmp["name"]) > 0) {
          objects[j + 1] = objects[j];
          j--;
        }
        objects[j + 1] = tmp;
      }
    }
    return objects;
  }

  dictionarySort(n, name_list);

  name_list.map((element) => {
    damage_list.forEach((item) => {
      if (item.name === element.name) return (element.damage += item.damage);
    });
  });

  name_list.forEach((item) => console.log(item.damage));
exitexit

ありがたいことにJSの解答例が載っていた.(要ログイン)
https://paiza.jp/works/mondai/reviews/show/7b6031590772c77e17b0764b15055fac

sortは使っているが,ずっと「いつ使うの?」「連想配列にしちゃえばいいか...」と思っていたnew Mapが使われていたのでメモ.

入力例
5
DOG
CAT
BIRD
ANT
ELEPHANT
4
DOG 3
ANT 5
BIRD 2
DOG 1
mapを出力してみる
Map(5) {
  'DOG' => 4,
  'CAT' => 0,
  'BIRD' => 2,
  'ANT' => 5,
  'ELEPHANT' => 0
}

こうやって使えるんだ
連想配列(オブジェクト)との違いは下記で.

https://qiita.com/chihiro/items/9965cd7eca0380cf288c
https://qiita.com/raccy/items/816a322fb330193e788b
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map#object_と_map_の比較

このスクラップは2024/08/09にクローズされました