简体   繁体   中英

JavaScript - find index of array inside another array

I am trying to find the index of an array inside another array in Javascript, as below:

 piece = [5, 10]; array = [[5, 10], [5, 11]]; //Using indexOf console.log(array.indexOf(piece)); //Using findIndex console.log(array.findIndex(function(element) { return element == piece; }));

I'm expecting these to return a 0 as that is the index where my "piece" is inside the larger array, but both methods return a -1.

Any ideas why this is happening? And if there is a different way for me to do this?

Thanks.

You are comparing objects (arrays) that were created each on their own, so they are not the same objects. If you want, you can compare each of the integers inside the arrays, and when also the array lengths match, you can conclude they are the "same":

 piece = [5, 10]; array = [[5, 10], [5, 11]]; //Using findIndex console.log(array.findIndex(function(element) { return element.length === array.length && element.every((val, i) => val == piece[i]); }));

To compare the actual values you can use the JSON.stringify() method:

 piece = [5, 10]; array = [[5, 10], [5, 11]]; //Using findIndex console.log(array.findIndex(function(element) { return JSON.stringify(element) == JSON.stringify(piece); }));

Arrays in JavaScript are not compared by value, but by reference. So if you have arrays a and b like this:

const a = [1, 2];
const b = [1, 2];

When you compare them using ==, or === then their references are compared, not values. So this console.log(a == b) , or console.log(a === b) will print false.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM