3

JavaScript / AS3 でリストまたはオブジェクト内のアイテムのインデックスを見つける最速の方法は何ですか? これらの両方の言語で構文が似ているため、両方についてこれを求めています。

仮定:

myArray = ["one", "two", "three"];
myObject = {one:1, two:2, three:3};

どちらが最速で、どの場合にそれが必要ですか?

  • Array.indexOf(x)
  • myObject[x] != null
  • x in myObject
  • 他の何か?
4

3 に答える 3

3

オブジェクトの使用は良い考えとは思えません。インデックスの再作成は手間のかかる作業であり、アクセスパフォーマンスの向上があればそれを一掃するからです。Array.indexOf(x)がその方法のようです。

于 2012-12-07T06:08:07.337 に答える
2

オブジェクトは効率的なハッシュ テーブルを使用して実装されるため、キーの検索は O(1) になります。「検索」する値が文字列で、その位置が静的である場合、これは非常に高速です。ブール値の存在のチェックは で行うことができkey in obj、保存されたインデックスは で取得されますobj[key] || -1

より複雑なオブジェクト (文字列に簡単にシリアル化できない) を探している場合は、配列を使用する必要があります。Array.indexOfO(n) で検索しますが、あまり頻繁に検索しなくても問題ありません。存在を確認するとarr.indexOf(item) != -1、インデックスが取得されますarr.indexOf(item)

于 2012-12-07T07:51:31.657 に答える