使用indexOf方法在2D数组中查找值

A_u*_*ser 5 javascript indexing

我想问一下我在JavaScript中关于2D数组的问题,类似于:

var array = [[2,45],[3,56],[5,67],[8,98],[6,89],[9,89],[5,67]]
Run Code Online (Sandbox Code Playgroud)

也就是说,在每个索引上,我也有一个数组.

假设我的第二个索引中有一个值56,我想要相应的第一个索引(即上例中的3个).

我可以使用循环(如果没有其他选项),但有没有更好的方法?

另外,我知道indexOfJavaScript中的方法,但是当我这样调用它时它不会返回索引:

array.indexOf(56);
Run Code Online (Sandbox Code Playgroud)

任何见解都会有所帮助.

Flo*_*ine 11

使用一些迭代器函数.

filter允许您迭代数组并在函数返回时仅返回值true.

现代浏览器方式:

var arr = array.filter( function( el ) {
    return !!~el.indexOf( 56 );
} );
console.log( arr ); // [3, 56]
console.log( arr[ 0 ] ); // "3"
Run Code Online (Sandbox Code Playgroud)

传统的浏览器方式,使用jQuery:

var arr = $.filter( array, function() {
    return !!~$.inArray( 56, $( this ) );
} );
console.log( arr ); // [3, 56]
console.log( arr[ 0 ] ); // "3"
Run Code Online (Sandbox Code Playgroud)

  • !!~ 是做什么的?(我是JS新手,以前从未见过!) (2认同)

xda*_*azz 6

你可以这样做:

var ret;
var index = array.map(function(el){return el[1];}).indexOf(56);
if (index !== -1) {
  ret = array[index][0];
}
Run Code Online (Sandbox Code Playgroud)