Мне нужно уменьшить массив объектов, но уменьшить указанное свойство c key
в объекте, и чтобы все объекты с одинаковым значением key
помещались в массив в связанном массиве value
.
Пример того, что мне нужно:
Объекты
var obj1 = {
name: "server1",
type: "http",
port: "8080"
}
var obj2 = {
name: "server2",
type: "https",
port: "8443"
}
var obj3 = {
name: "server3",
type: "http",
port: "80"
}
// Place objects in an array (as interm step)
var array = [obj1, obj2, obj3];
С приведенным выше кодом я попытался
var map = new Map(array.map(server => [server.type, server]));
но в итоге я получаю:
0: {"http" => Object}
key: "http"
value:
name: "server3"
port: "80"
type: "http"
1: {"https" => Object}
key: "https"
value:
name: "server2"
port: "8443"
type: "https"
но что мне нужно :
0: {"http" => Object}
key: "http"
value:[
{
name: "server1"
port: "8080"
type: "http"
},
{
name: "server3"
port: "80"
type: "http"
},
1: {"https" => Object}
key: "https"
value:
name: "server2"
port: "8443"
type: "https"
Так что я могу go через каждые type
найдите все уникальные значения, создайте списки каждого объекта с этим типом, а затем добавьте его на карту, но это кажется слишком сложным для простой задачи.
Есть ли более быстрый / более удобный способ сократить это?