Поиск данных в массивах [Node.JS] - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть вопрос: (извините за плохое форматирование)

У меня есть массив:

[
    {
        "data": [
            [
                "kek",
                "lol"
            ],
            [
                "notkek",
                "notlol"
            ]
        ]
    }
]

Если кто-то пишет «кек», он должен искать его в «данных»массив и возвращает позицию "кек" внутри своего массива (["kek","lol"])

и позицию массива

{
    "data": [
        [
            "kek",
            "lol"
         ]}

(в данном случае "data [0]")

Если кто-нибудь знает ответ, пожалуйста, помогите мне

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Метод Array.findIndex и Array.includes может вам помочь

const obj = {
  data: [
    [
      'kek',
      'lol'
    ],
    [
      'notkek',
      'notlol'
    ],
  ],
};

const keyToSearch = 'kek';

// We look for the key
const index = obj.data.findIndex(x => x.includes(keyToSearch));

if (index === -1) {
  console.log(`We didn't found ${keyToSearch}`);
} else {
  console.log(`We found ${keyToSearch} at index ${index}`);
}

Двойное восстановление индекса

const obj = {
  data: [
    [
      'kek',
      'lol'
    ],
    [
      'notkek',
      'notlol'
    ],
    [
      'notkek',
      'notlol',
      'otherstuff',
      'kek',
      'test',
    ],
  ],
};

const keyToSearch = 'kek';

const ret = obj.data.reduce((tmp, x, xi) => {
  // We look for the key
  const index = x.findIndex(y => y === keyToSearch);

  if (index === -1) return tmp;

  return [
    ...tmp,

    {
      absoluteIndex: xi,
      relativeIndex: index,
    },
  ];
}, []);


if (!ret.length) {
  console.log(`We didn't found ${keyToSearch}`);
} else {
  ret.forEach(({
    absoluteIndex,
    relativeIndex,
  }) => console.log(
    `We found ${keyToSearch} at`,
    `data index ${absoluteIndex}, in ${relativeIndex} position`,
  ));
}
0 голосов
/ 11 сентября 2018
userInput = 'kek'
  let item = data.map((item, indx) => {
     item.includes(userInput) ? return({"indx":indx,"nestedIndex":item.indexOf(userInput)}) : null
   })

сопоставить массив данных, и если во вложенном массиве был элемент, который вы искали, чем вернуть индекс массива и индекс элемента в этом массиве

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...