如何检索传递的数组的索引?我目前使用的解决方案也是发送索引,但这感觉不对。
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);
如何检索传递的数组的索引?我目前使用的解决方案也是发送索引,但这感觉不对。
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);
没有真正的方法可以做你所要求的。JavaScript 纯粹是按值调用,这意味着在进行函数调用之前,参数会被完全评估。评估后剩下的就是最终值,并将其副本传递给函数。
您当然可以编写代码在一些相对全局的数组中搜索值,但是如果您可以简单地将数组索引传递给函数,那将浪费 CPU 周期。
你可以使用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]);
你不能这样做,因为数组或索引没有传递给函数,甚至对象。
从对象的arr
属性中读取数组,然后从数组中读取对象,然后从该对象的x
属性中读取值,并使用该值调用函数。
一旦进入函数,您就无法判断该值来自对象的属性,或者对象存储在数组中,或者数组又是对象中的属性。