2013-04-07 190 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 2013-04-07 13:11:12

+1

是的,下面的答案是關於錢的。你在具體情況下試圖做什麼? – ruffin 2013-04-07 13:13:12

+2

這將有助於瞭解爲什麼它是你想要做到這一點。這是一個奇怪的要求,我的懷疑是你正在追求一個錯誤的過程來實現你的目標。 – Pointy 2013-04-07 13:13:35

回答

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 2013-04-07 13:20:01

+0

@wubbewubbewubbe這是因爲你的代碼做了額外的工作*發現*已經在其他地方找到的東西是瘋狂的。 – Pointy 2013-04-07 13:25:55

3

有做你的要求沒有真正的方法。 JavaScript純粹是按值調用的,這意味着在函數調用之前,參數是完全由評估。評估結束後剩下的所有內容都是最終值,並將其副本傳遞給該函數。

你當然可以編寫代碼在一些相對全局的數組中搜索一個值,但如果你可以簡單地將數組索引傳遞給函數,那將浪費CPU週期。

2

你不能那樣做,因爲數組或索引沒有傳遞給函數,甚至是對象。

從該對象的arr屬性中讀取該數組,然後從該數組中讀取一個對象,然後從該對象的x屬性中讀取該值,然後使用該值調用該函數。

一旦進入函數內部,就無法判斷該值是來自某個對象的某個屬性,還是該對象存儲在一個數組中,或者該數組又是該對象中的一個屬性。