Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多维数组的indexOf语法?_Javascript_Arrays_Syntax - Fatal编程技术网

Javascript 多维数组的indexOf语法?

Javascript 多维数组的indexOf语法?,javascript,arrays,syntax,Javascript,Arrays,Syntax,indexOf()遍历多维数组的语法是什么? 例如: var x = []; // do something x.push([a,b]); x.indexOf(a) // ?? 我想找到“a”并用“b”做点什么。但它不起作用。。。由于这种方法本身应该是迭代的,所以我不认为使用任何其他迭代都是一件好事。目前,我使用两个简单的数组来模拟它,但我想这应该也能起作用……JavaScript本身没有多维数组,因此x只是一个数组。另外,并非所有浏览器都支持数组的indexOf方法,特别是IE(至少在版本

indexOf()
遍历多维数组的语法是什么? 例如:

var x = [];
// do something
x.push([a,b]);

x.indexOf(a) // ??

我想找到“
a
”并用“
b
”做点什么。但它不起作用。。。由于这种方法本身应该是迭代的,所以我不认为使用任何其他迭代都是一件好事。目前,我使用两个简单的数组来模拟它,但我想这应该也能起作用……

JavaScript本身没有多维数组,因此
x
只是一个数组。另外,并非所有浏览器都支持数组的
indexOf
方法,特别是IE(至少在版本7之前),它仅在JavaScript 1.6中引入


您唯一的选择是手动搜索,迭代
x
并依次检查每个元素。

除非您想保持顺序,否则使用字典要简单得多:

var x = {};

// do something

x[a] = b;
尽管顺序未定义,但仍可以迭代键:

for (var key in x) {
   alert(x[key]);
}
这仅适用于有序对象/列表,并且仅在定义了Array.prototype.indexOf时有效

x = [1,2], b = {one:function(){alert('gj')}}, c = x.push(b);

x[ x.indexOf( b ) ]['one']()
您可以按照Philippe Leybaert的建议使用对象(或字典)。这将允许快速访问元素:

var x = {};

x[a] = b; // to set

alert(x[a]) // to access
但如果你坚持使用
索引
,还有一种方法,不管它有多难看:

var x = [];

var o = Object(a); // "cast" to an object
o.b = b; // attach value

x.push(o);

alert(x.indexOf(a)); // will give you the index
alert(x[1].b); // access value at given index
简单地说:
indexOf()
不是这样工作的。如果您这样做,它可能会起作用:

var x = [];
// do something
z = [a,b];
x.push(z);

x.indexOf(z);
但是你已经有z.b了,不是吗?因此,如果您必须忽略所有认为使用对象(或字典)实际上更容易的人的建议,那么您必须使用或自己搜索索引:

Array.prototype.indexOf0 = 
  function(a){for(i=0;i<this.length;i++)if(a==this[i][0])return i;return null;};
var x = [];
// do something
x.push([a,b]);

x.indexOf0(a); //=> 0
Array.prototype.indexOf0=
函数(a){for(i=0;i0

你想创建一个字典吗?为什么不使用一个对象呢?
{}
四个不同编码的建议对你有用吗?只是好奇。用x[a]代替x.a.“a”不是键名,而是保存键的变量。好吧,你一定做得不一样,因为我这样做的方式。我注意到这只适用于按数字顺序排列且具有长度属性的数组,而不适用于“多维”或者字典。注意-对于要提供给“b”的引用,您还需要有对原始对象的引用,具有类似属性的类似对象仍然是不同的。
Array.prototype.indexOf0 = 
  function(a){for(i=0;i<this.length;i++)if(a==this[i][0])return i;return null;};
var x = [];
// do something
x.push([a,b]);

x.indexOf0(a); //=> 0