Узел связи массива фильтров

Я новый разработчик реагирования, здесь я использую «реагировать-d3-graph», чтобы получить свои узлы и ссылки, на данный момент, используя «информацию», я успешно получаю 3 узла и две ссылки, эти ссылки подключаются к узлам. например, ссылка с «целью: 1» связана с узлом «id: 1», а ссылка с «целью: 2» связана с узлом «id: 2» (ссылки и узлы могут быть намного больше). Мой вопрос в том, есть ли способ отфильтровать это, если пользователь нажимает кнопку, то из редукса я получаю объект «testThis», этот объект показывает «идентификатор» нажатых в данный момент кнопок, и этот идентификатор может быть в этих «узлах» с имя 'book_id', как его отфильтровать, чтобы, если 'узлы' содержали 'book_id', значение которого совпадает со значением 'идентификатора', найти его и выбрать. В этом случае он должен выбрать узел, у которого есть book_id и его связь с ним (ссылка с целью 2), чтобы с этим пользователем можно было видеть только два узла и одну ссылку, возможно ли это? поэтому Graph получит следующее: после нажатия кнопки:

{
  links: [
    {
      id: 1,
      source: 0,
      target: 2,
      color: 'green',
    },
  ],
  nodes: [
    {
      id: 0,
      name: 'Camera',
      x: 210,
      y: 0,
    },
    {
      book_id: 'gDUy',
      id: 2,
      name: 'livingRoom',
      x: 400,
      y: 210,
    },
  ],
};

до нажатия кнопки:

import { Graph } from 'react-d3-graph';

const testThis  = {
    identifier: "gDUy",
}


const info = {
  links: [
    {
      id: 0,
      source: 0,
      target: 1,
      color: 'green',
    },
    {
      id: 1,
      source: 0,
      target: 2,
      color: 'green',
    },
  ],
  nodes: [
    {
      id: 0,
      name: 'Camera',
      x: 210,
      y: 0,
    },
    {
      id: 1,
      name: 'Kitchen',
      x: 0,
      y: 210,
    },
    {
      book_id: 'gDUy',
      id: 2,
      name: 'livingRoom',
      x: 400,
      y: 210,
    },
  ],
};


  <Graph
          data = {info}

        />

Английский не мой родной язык, поэтому могут быть ошибки.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

const testThis = {
  identifier: "gDUy",
}


const info = {
  links: [{
      id: 0,
      source: 0,
      target: 1,
      color: 'green',
    },
    {
      id: 1,
      source: 0,
      target: 2,
      color: 'green',
    },
  ],
  nodes: [{
      id: 0,
      name: 'Camera',
      x: 210,
      y: 0,
    },
    {
      id: 1,
      name: 'Kitchen',
      x: 0,
      y: 210,
    },
    {
      book_id: 'gDUy',
      id: 2,
      name: 'livingRoom',
      x: 400,
      y: 210,
    },
  ],
};

function filterGraph() {
  let nodes = info.nodes.filter(x => x.book_id == testThis.identifier);
  let links = info.links.filter(x => nodes.map(y => y.id).includes(x.target));
  let sourceNodes = info.nodes.filter(x => links.map(y => y.source).includes(x.id));
  let allNodes = nodes.concat(sourceNodes);
  console.info({links:links,nodes:allNodes});
}

filterGraph();

Проверьте изменения, которые я сделал

Schokokuchen Bäcker 09.05.2022 13:40

спасибо, это работает, не могли бы вы также помочь с этим, такой же вопрос, но с фильтрацией по узлам камеры: stackoverflow.com/questions/72242719/…

walee 14.05.2022 21:15

Другие вопросы по теме

Сопоставление индекса для возврата предпоследней нечисловой записи
Передайте массив JSON для работы в React в качестве реквизита, а затем подсчитайте элементы в области
Обновление MongoDB изменить/преобразовать массив со строковыми элементами в массив с элементами объекта, используя существующее/текущее значение в этом объекте
Я хочу проверить элементы в списке на наличие целых чисел и вернуть целые числа каждого элемента в списке, как это? ожидаемый результат: ['2', '12'] как это сделать?
Доступ к значению массива PHP в jQuery.ajax не работает
Подсчитать массив jsonb с условием в postgres
Получить сумму повторяющихся объектов в объекте вложенного массива
Вычисление значений строки в ячейке и возврат «парных» или «непарных»
Добавьте сообщение, которое отображается, когда пользователь выбирает несуществующий индекс в консоли C#
Как я могу проверить в PHP, находится ли индекс ассоциативного массива в последовательности или нет, и вызвать исключение, если индексированный массив не в последовательности?