2013-04-07 159 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属性中读取该值,然后使用该值调用该函数。

一旦进入函数内部,就无法判断该值是来自某个对象的某个属性,还是该对象存储在一个数组中,或者该数组又是该对象中的一个属性。