Нахождение индекса массива в двумерном массиве? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть два массива.Я хочу найти индекс currentArr позиций в originalArr .Оба массива обновляются во время выполнения.

let currentArr= [[450, 30, "down"],[480, 60, "right"]]
let originalArr = [[510, 60, "right"],[480, 60, "right"],[450, 60, "down"],[450, 30, "down"], [450, 0, "right"]]

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Поскольку внутренние массивы всегда будут в одном и том же порядке, вы можете использовать JSON.stringify для сравнения строковой версии массивов:

let currentArr= [[450, 30, "down"],[480, 60, "right"]]
let originalArr = [[510, 60, "right"],[480, 60, "right"],[450, 60, "down"],[450, 30, "down"], [450, 0, "right"]];

let indexes = currentArr.map(c =>  
                originalArr.findIndex(o => JSON.stringify(o) === JSON.stringify(c)));

console.log(indexes);
0 голосов
/ 02 марта 2019

Вы можете использовать функцию map и функцию findIndex для поиска совпадений.

Эта альтернатива проверяет длину, а также каждое значение индекса, используя функцию every.

Я предполагаю, что индексы должны быть в одной позиции

let currentArr= [[450, 30, "down"],[480, 60, "right"]]
let originalArr = [[510, 60, "right"],[480, 60, "right"],[450, 60, "down"],[450, 30, "down"], [450, 0, "right"]];

let indexes = currentArr.map(a => originalArr.findIndex(ia => ia.length === a.length && ia.every((e, i) => e === a[i])));

console.log(indexes);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...