Задать вопрос

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

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

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

const inArray = (arr, val) =>
  arr.flat(Infinity).includes(val);

// или

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

// или

function inArray(arr, val) {
  for (const stack = [...arr]; stack.length;) {
    const n = stack.pop();
    if (n === val) {
      return true;
    } else if (n instanceof Array) {
      stack.push(...n);
    }
  }

  return false;
}
Ответ написан
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))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы