2013-04-07 1 views
0

전달 된 배열의 인덱스를 어떻게 검색합니까? 현재 내가 사용하는 솔루션도 색인을 보내고 있지만, 그렇게 느껴지지는 않습니다.전달 된 배열의 인덱스

jsFiddle

var obj = {arr: [{x: 1, y: 2},{x: 3, y: 4},{x: 5, y: 6}]}; 

function myFunction(myObj) 
{ 
    alert(myObj); // 5 
    // alert(the index of the array that is passed); // 2 
} 

myFunction(obj.arr[2].x); 
+1

배열의 객체 중 하나만 전달하지만 숫자는 전달하지 않습니까? – Bergi

+1

네, 답은 아래의 돈에 있습니다. 문맥 상 구체적으로 무엇을하려고합니까? – ruffin

+2

그것은 당신이하고 싶은 이유를 알고 많은 도움이 될 것이다. 그것은 이상한 요구, 그리고 나의 의심은 당신이 당신의 실제 목표에 잘못된 과정을 추구하고 있다는 점이다. – Pointy

답변

2

당신은 당신이 요구하는지 무엇을 할 수있는 실제적인 방법은 없습니다 Array.indexOfjsfiddle

var obj = {arr: [{x: 1, y: 2},{x: 3, y: 4},{x: 5, y: 6}]}; 

function myFunction(myObj) 
{ 
    alert(obj.arr.indexOf(myObj)); 
} 

myFunction(obj.arr[2]); 
+0

이 값이 같은 경우에도 작동하는 것 같다. 그러나 다른 의견을 추가하지는 않습니다. 그것은 당신의 코드를 미친 때문이다 – wubbewubbewubbe

+0

@wubbewubbewubbe *이 찾는 * 이미 다른 곳에서 발견 된 무언가의 추가 작업을한다. – Pointy

3

사용할 수 있습니다. JavaScript는 순전히 call-by-value입니다. 즉, 함수 호출이 수행되기 전에 인수는 이고 완전히입니다. 평가 후에 남겨진 것은 최종 값이며 그 복사본이 함수에 전달됩니다.

상대적으로 전역 배열에서 값을 검색하는 코드를 작성할 수는 있지만 단순히 배열 인덱스를 함수에 전달할 수 있으면 CPU주기가 낭비됩니다.

2

배열이나 인덱스가 함수 또는 개체로 전달되지 않기 때문에 그렇게 할 수 없습니다.

개체의 arr 속성에서 배열을 읽은 다음 개체를 배열에서 읽은 다음 그 값을 해당 개체의 x 속성에서 읽으면 해당 값으로 함수가 호출됩니다.

일단 함수 안에 있으면 값이 객체의 속성에서 왔는지 또는 객체가 배열에 저장되었는지 또는 객체의 속성이 차례로 해당 속성인지 여부를 알 수 없습니다.