2010-12-07 9 views
0

배열 자체 내에서 요소 위치를 찾는 가장 효과적인 방법은 무엇입니까?자바 스크립트에서 요소 자체의 배열 요소 위치 찾기

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

: = Math.floor (

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