Как проверить наличие элемента в многомерном массиве?

Есть многомерный массив, хочу проверить, находится ли элемент в массиве. Использую метод jquery inArray, но возвращает -1. Как реализовать?

console.log($.inArray("22693", orderlist));
EDsYHlaBNRM.jpg
  • Вопрос задан
  • 8974 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
А какая у вас может быть вложенность и количество элементов? Если только так, как вы показали - тогда вместо orderlist проверяйте orderlist[0][0]. Если заранее не знаете - сделайте метод, который проверит всё:

const inArray = (arr, val) =>
  arr.some(n => Array.isArray(n) ? inArray(n, val) : Object.is(n, val));

// или

const inArray = (arr, val) =>
  arr.flat(Infinity).includes(val);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
orderlist.some(arr => arr.some(arr => arr.includes("22693")))


Ну или с рекурсией для любого уровня вложенности:
function search(arr, value) {
  if(!(arr instanceof Array)) return value == arr;
  return arr.some(item => search(item, value)); 
}
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
Рекурсия нужна. Тогда будет поиск на любом уровне вложенности.
inArr=function(val,arr){if(arr===null)return;for(let i=0;i<arr.length;i++){if(arr[i]==val)return true;if('object'==typeof arr[i])if(inArr(val,arr[i]))return true}return false}; console.log(inArr("22693", orderlist))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы