Я новый разработчик реагирования, здесь я использую «реагировать-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}
/>Английский не мой родной язык, поэтому могут быть ошибки.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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();спасибо, это работает, не могли бы вы также помочь с этим, такой же вопрос, но с фильтрацией по узлам камеры: stackoverflow.com/questions/72242719/…
Проверьте изменения, которые я сделал