Как найти элемент в многомерном массиве js?

Есть многомерный массив (localStorage), хочу проверить находится ли элемент в массиве. Использую метод jquery inArray, но возвращает -1. Как реализовать?
console.log($.inArray("22693", orderlist));
EDsYHlaBNRM.jpg
  • Вопрос задан
  • 1679 просмотров
Решения вопроса 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))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Stream Labs Москва
До 150 000 ₽
Myagi Минск
от 3 000 до 4 000 $
Salesbeat Москва
от 150 000 до 250 000 ₽
19 февр. 2020, в 12:58
6000 руб./за проект
19 февр. 2020, в 12:21
800 руб./за проект
19 февр. 2020, в 09:36
10000 руб./за проект