@anton_mra
Web-программист

Как получить только индексы массива?

При нажатии на checkbox (multi) мне нужно, чтобы пройдясь по массиву, я получил только id(индекс) элементов.
Вот TreeSelect:
5d13424ce0700355346934.png

Value:
Если я нажимаю на самое низшее звено дерева, то я имею ["54"] или ["39", "51"].
Если нажимаю ещё на любое другое(т.е. выше), то value такой
["5b0a509f-7e9f-e711-8114-00155da4250e", "39", "51"]


Вот исходный массив projectsId:
5d1318aadb392808310065.png

let arrOfValues = [];
                  value.forEach(val => {
                    arrOfValues = this.state.projectsId.map(
                      el => el.indexOf(val) !== -1
                    );
                  });

Это лишь пример моей попытки.
На выходе мне нужно иметь что-то такое 34,34,35,39,51,52,1067,1070,1128,1133,1142,1143,1144,
По сути я ищу среди всех проектов такие, чтобы у них хотя бы одно значение из value совпадало с projectsId.
Я пытаюсь сделать фильтр у себя на сайте.
  • Вопрос задан
  • 484 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Нужно собрать индексы, где встречается данный uuid?
function find(arr, uuid) {
  return arr.reduce((p,c,i) => {
    if (!!~c.indexOf(uuid)) p.push(i);
    return p;
  }, []);
}

find(this.state.projectsId, '560a509f-7e9f-e711-8114-00155da4250e');
// [1142, 1143, 1144]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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