如何检索传递的数组的索引?我目前使用的解决方案也是发送索引,但感觉不对。
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);
答案 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
属性中读取该值,并调用该函数有这个价值。
进入函数后,您无法判断该值是来自对象的属性,还是该对象存储在数组中,或者该数组又是对象中的属性。