2010-12-07 9 views
0

配列自体の要素にアクセスできる場合、配列内の要素の位置を見つける最も効果的な方法はありますか?Javascriptの要素自体の配列要素の位置を調べる

var arr = []; 
for (var i = 0; i < 10; i++) { 
    arr[i] = {test: Math.floor(Math.random() * 101)} 
} 
var test = arr[Math.floor(Math.random() * 11)]; 

は今どのように私はtestはを参照することを要素の位置を得ることができますか?

+0

このようにするvar POS = Math.floor(Math.random(であってもよく、 )* 11); –

答えて

1

ここでそれを生成するとき、私はちょうどこのように、位置を保存したい:

var arr = []; 
for (var i = 0; i < 10; i++) { 
    arr[i] = {test: Math.floor(Math.random() * 101)} 
} 
var index = Math.floor(Math.random() * 11); 
var test = arr[index]; 
//index is the position 
+0

そのメモリは大量ではありませんか? (各セルが占有されている大規模な多次元配列を持っていると仮定して) – GZaidman

+1

@GZaidman - 私はそう言わないでしょう... '.indexOf()を使って検索する代わりに、CPU集中型です。結果を知る。 –

0

私はランダム生成は一例であることを前提としています。

参照が要素になっていて、そのインデックスを探したい場合は、Array.indexOfメソッドを使用できます。新しい機能だから、すべてのブラウザがそれをネイティブにサポートするわけではありませんが、実装は簡単です。今、あなたのようにそれを使用することができます

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement) { 
    var len = this.length >>> 0; 
    for (var i = 0; i < len; i++) { 
     if (searchElement === this[i]) return i; 
    } 
    return -1; 
    }; 
} 

:ベアボーン・ソリューションは次のようになり

index = array.indexOf(elem) // index from an element reference 
examp = [5,8,12,5].indexOf(12) // 2