LoginSignup
1
3

More than 5 years have passed since last update.

配列よりもオブジェクトを使うべき時があると知る

Last updated at Posted at 2015-12-30

JavaScriptのデータ構造について1つ学びがあったのでメモします。
まずは例をご覧ください。

ユニークではない数値の登場回数を調べる

最初に書いたコードがこちら。

  var count = 0;
  var flags = [];

  for(var i = 0; i < data.length; i += 1) {
    flags.push(false);
  }
  for(var i = 0; i < data.length; i += 1) {
    if(flags[data[i]]) {
      count += 1;
    } else {
      flags[data[i]] = true;
    }
  }
  console.log(count);

フラグの配列を使用しています。
まず最初にfalseで埋めます。そして、登場した番号にはtrueを割り当てます。

最終的に、ユニークでない数値が何回登場したのかを出力しています。

これを改変したのが次のコード。

  var count = 0;
  var flags = {};

  for(var i = 0; i < data.length; i += 1) {
    if(flags[data[i]]) {
      count += 1;
    } else {
      flags[data[i]] = true;
    }
  }
  console.log(count);
}

改良後のコードは3行短くなっています。
そうです、最初にfalseで埋める作業をスキップしたのです。

なんでこんなことができるかというと、オブジェクトを利用しているからなんですね。

例えば、3番目のフラグを用意する時。
配列ならば、1番目と2番目の要素をまずは埋めなくてはいけません。ただし、1番目と2番目が必要かどうかは不明です。
それがオブジェクトならば、{ '3' : false }とすればいいのです。1番目と2番目は必要になってから定義すればいいのです。

得られた知見

今までは配列をベースのコードを書いてきたのですが、オブジェクトもけっこう便利ですね(何を今さらって感じですが)

特に、順序立てが重要ではない場合は、積極的にオブジェクトを使っていくべきかもしれません。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3