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

3 回答 3

3

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

您当然可以编写代码在一些相对全局的数组中搜索值,但是如果您可以简单地将数组索引传递给函数,那将浪费 CPU 周期。

于 2013-04-07T13:12:01.590 回答
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]);
于 2013-04-07T13:11:57.777 回答
2

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

从对象的arr属性中读取数组,然后从数组中读取对象,然后从该对象的x属性中读取值,并使用该值调用函数。

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

于 2013-04-07T13:12:51.727 回答