Объединить объекты в массиве с одинаковым значением

Здесь вы можете найти очень хорошую статью от Microsoft Employee: Изменение размера изображений с сервера с использованием WPF / WIC вместо GDI + , в котором предлагается использовать WPF вместо GDI +.

В любом случае, в конце он утверждает следующее:

Я связался с командой WPF, чтобы получить окончательное слово о том, является ли это поддерживается. К сожалению, это не так, и соответственно обновляется документация. Я извиняюсь за любую путаницу, которая может быть вызвана. Мы смотрим на способы сделать эту историю более приемлемой в будущем.

blockquote>

Таким образом, WPF также не поддерживается в веб-приложениях, и я считаю, что: -S

0
задан user8599269 17 January 2019 в 17:04
поделиться

1 ответ

вам понадобится Array.reduce () , чтобы сгруппировать объекты с одинаковой меткой:

var pages = [{
    name: "page1",
    list: {
      fields: [{
          name: "sHist",
          label: "Range",
          type: "long",
          searchable: false
        },
        {
          name: "sFuture",
          label: "Range",
          type: "long",
          searchable: false
        },
        {
          name: "ordersinPage1",
          label: "Orders",
          type: "long",
          searchable: false
        }
      ]
    }
  },
  {
    name: "page2",
    list: {
      fields: [{
          name: "needs",
          label: "Needs",
          type: "long",
          searchable: false
        },
        {
          name: "fulfil",
          label: "Fulfill",
          type: "long",
          searchable: false
        },
        {
          name: "ordersinPage2",
          label: "Orders",
          type: "long",
          searchable: false
        }
      ]
    }
  }

]

const result = pages.map(page =>
  page.list.fields.reduce((all, curr) => {
    const ndx = all.findIndex(e => e.label === curr.label); // look for the current element in the list
    if (ndx > -1) { 
      // if found, concat the names in an array
      // array.flat() will transform this : [["a"], "b"] into : ["a", "b"]
      all[ndx].name = [all[ndx].name, curr.name].flat();
    } else {
      // otherwise, edit the name property to become an array and push it.      
      all.push({ ...curr, name: [curr.name]})
    }
    return all;
  }, [])
)

console.log(result)

0
ответ дан Taki 17 January 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: