Как получить следующую ближайшую стоимость? - PullRequest
1 голос
/ 24 апреля 2020

У меня есть функция, в которой я перебираю массив вложенных объектов, целью которого является создание связей между различными блоками. В моей функции я могу создать первый фильтр, в котором я получаю различные варианты комбинации между полями, но после этого шага мне нужно остаться только с тем, который возвращает следующее ближайшее значение одного из свойств каждого объекта. Например, когда я нахожусь в блоке 1, у которого свойство порядка равно 3 и может быть объединено с любым количеством блоков, мне нужно оставить только тот, у которого свойство порядка является следующим ближайшим значением. Предотвращение того, что вы можете соединиться с тем, которое имеет более низкое значение и имеет самое высокое значение порядка из всех.

for (const indexBox in boxes) {
      if (boxes.hasOwnProperty(indexBox)) {
        const box = boxes[indexBox];
        const combinations = box.filter(b => b.properties.order !== box.properties.order);
     }
}

мои данные

[
  {
    x: 200,
    y: 350,
    properties: {
      order: 1,
      name: "A",
      input: {
        0: { id: 1, boxId: 1, color: "azul" },
        1: { id: 2, boxId: 1, color: "rojo" },
      },
      output: {
        0: { id: 1, boxId: 1, color: "azul" },
        1: { id: 2, boxId: 1, color: "rojo" },
      },
    },
  },
  {
    x: 600,
    y: 550,
    properties: {
      order: 2,
      name: "B",
      input: {
        0: { id: 1, boxId: 2, color: "azul" },
        1: { id: 2, boxId: 2, color: "rojo" },
      },
      output: { 0: { id: 1, boxId: 2, color: "verde" } },
    },
  },
  {
    x: 100,
    y: 450,
    properties: {
      order: 3,
      name: "C",
      input: {
        0: { id: 1, boxId: 3, color: "azul" },
        1: { id: 2, boxId: 3, color: "verde" },
      },
      output: {
        0: { id: 1, boxId: 3, color: "azul" },
        1: { id: 2, boxId: 3, color: "rojo" },
      },
    },
  },
]

Из этого фильтра я получаю массив объекты, какой метод я должен использовать, чтобы получить следующий ближайший порядок? или, может быть, есть способ получить его непосредственно в первом фильтре?

Спасибо, что уделили время.

...