2010-12-07 14 views
0

Das ist der effektivste Weg, um eine Elementposition innerhalb eines Arrays zu finden, wenn wir Zugriff auf das Element selbst haben?Die Position eines Array-Elements innerhalb des Elements selbst finden in 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)]; 

Nun, wie kann ich die Position des Elements erhalten, dass test beziehen sich auf?

+0

auf diese Weise var pos sein kann = Math.floor (Math.random () * 11); –

Antwort

1

Ich würde speichern nur die Position, wenn es hier zu erzeugen, wie folgt aus:

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

Ist das nicht speicherintensiv? (vorausgesetzt, ich habe ein großes mehrdimensionales Array, in dem jede Zelle belegt ist) – GZaidman

+1

@GZaidman - Ich würde es nicht sagen ... die Alternative ist die Suche über '.indexOf()' ist viel mehr CPU-intensiv, wenn Sie bereits kenne das Ergebnis. –

0

Ich gehe davon aus, dass die Zufalls Generation nur ein Beispiel ist.

Jetzt, wenn Sie eine Referenz zu einem Element haben und seinen Index herausfinden möchten, können Sie Array.indexOf Methode verwenden. Es ist ein neues Feature, das nicht von allen Browsern nativ unterstützt wird, aber einfach zu implementieren ist. Ein mit nacktem Knochen Lösung würde wie folgt aussehen:

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; 
    }; 
} 

Jetzt können Sie es als verwenden:

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

Verwandte Themen