У меня есть функция, в которой я перебираю объект объектов, чтобы извлечь данные из каждого из них и сформировать конечный объект, который создает некоторые соединения. Эта функция работает без проблем, пока я не удаляю некоторые объекты и не воссоздаю соединения, так как я собираю внутренний идентификатор самих элементов, и мне нужно будет вспомнить ключ, назначенный при создании исходного объекта. Ниже приведен пример оригинального объекта. Чтобы вы поняли это, если я удаляю объект с ключом 1 и создаю соединения снова, идентификатор не меняется, и я создаю некоторые соединения между объектами 1 и 3 (которые являются исходным идентификатором), и что мне нужно, это соединение между ключами 0 и 1 (значения, которые переназначаются)
operators.forEach((next, index, operator) => {
const combinations = operator.filter(b => b.properties.viewId !== next.properties.viewId);
const inputKeys: any = Object.keys(next.properties.inputs);
const inputValues: any = Object.values(next.properties.inputs);
const operatorsKeys: any = Object.keys(operator);
inputKeys.forEach((input, inputIndex) => {
combinations.forEach((operator) => {
const outputKeys: any = Object.keys(operator.properties.outputs);
const outputValues: any = Object.values(operator.properties.outputs);
outputValues.forEach((output, outputIndex) => {
if (output.id === inputValues[inputIndex].id) {
links.push( {
fromOperator: operator.properties.id,
fromConnector: outputKeys[outputIndex],
toOperator: next.properties.id,
toConnector: input,
});
}
});
});
});
переменная operatorKey будет той, которую мне нужно будет присвоить в значениях fromOperator и toOperator. исходный объект следующий, если он служит руководством:
0: {
x: 200,
y: 350,
properties: {
id: 1,
name: "A",
inputs: {
input_0: { id: 1, color: "azul" },
input_1: { id: 2, color: "rojo" },
},
outputs: {
output_0: { id: 1, color: "azul" },
output_1: { id: 2, color: "rojo" },
},
},
},
1: {
x: 600,
y: 550,
properties: {
id: 2,
name: "B",
inputs: {
input_0: { id: 1, color: "azul" },
input_1: { id: 2, color: "rojo" },
},
outputs: { output_0: { id: 1, color: "verde" } },
},
},
2: {
x: 100,
y: 450,
properties: {
id: 3,
name: "C",
inputs: {
input_0: { id: 1, color: "azul" },
input_1: { id: 2, color: "verde" },
},
outputs: {
output_0: { id: 1, color: "azul" },
output_1: { id: 2, color: "rojo" },
},
},
},
}
любая помощь приветствуется