Как можно организовать поиск в двумерном массиве

Рейтинг: 0Ответов: 1Опубликовано: 19.03.2023

JSON-файл перевел в двухмерный массив, а как можно организовать поиск по слову в этом же массиве?
includes и find не помогает

сам код:

    const fs = require("fs")
    const readFile = fs.readFileSync('input.json', 'utf8');
    let arr =[]
    const parsedData = JSON.parse(readFile);
    for (let i = 0; i < 20; i++) {
        arr[`${i}`] = parsedData.table[`${i}`]; 
    }

Так же, не помогает это

let str1 = 'th'
console.info(arr[0].name.filter(s => s.indexOf(str1) === 0));

Данные из json-файла, parsedData =

{
  table: [
    {
      name: '\n        Арахис Solo Nina Васаби 70г\n      ',
      price: '50  ₽'
    },
...
]
}

При попытке обратиться к arr[i].name в функции

let a = "Арахис Восточный гость Жареный соленый 150г"
for (let i = 0; i < 130; i++){
    if (arr[i].name === a) {
        console.log(arr[i].name)
    }
}

пишет: Cannot read properties of undefined (reading 'name')

Ответы

▲ 1

Вот пример, как можно организовать поиск по массиву.

indexOf возвращает -1, если не найдено ничего, либо индекс позиции искомого значения.

const parsedData = {
  table: [
    {
      name: '\n        Арахис Solo Nina Васаби 70г\n      ',
      price: '50  ₽'
    },
    {
      name: '\n       Просто орехи 70г\n      ',
      price: '100  ₽'
    },
    {
      name: '\n        Грецкий орех 70г\n      ',
      price: '150  ₽'
    },
  ]
}

function searchValues(arr, val) {
  return arr.table.filter(it => it.name.indexOf(val) !== -1);
}

console.log(searchValues(parsedData, 'орех'));
console.log(searchValues(parsedData, 'Арахис'));