传递的数组的索引

时间:2013-04-07 13:09:19

标签: javascript arrays object object-literal

如何检索传递的数组的索引?我目前使用的解决方案也是发送索引,但感觉不对。

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

3 个答案:

答案 0 :(得分:3)

没有真正的方法来做你所要求的。 JavaScript纯粹是按值调用,这意味着在进行函数调用之前,参数完全评估。评估后剩下的所有内容都是最终值,并将其副本传递给函数。

当然,您可以编写在某个相对全局数组中搜索值的代码,但如果您只需将数组索引传递给函数,则会浪费CPU周期。

答案 1 :(得分:2)

您可以使用Array.indexOf jsfiddle

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]);

答案 2 :(得分:2)

你不能这样做,因为数组或索引不会传递给函数,甚至传递给对象。

从对象的arr属性中读取数组,然后从数组中读取一个对象,然后从该对象的x属性中读取该值,并调用该函数有这个价值。

进入函数后,您无法判断该值是来自对象的属性,还是该对象存储在数组中,或者该数组又是对象中的属性。