Как объединить массив объектов, сопоставленных со свойством из другого массива - PullRequest
0 голосов
/ 23 мая 2018

Я хочу объединить 2 массива, чтобы создать новый, который имеет значение обновления на основе ключа, но не может достичь.Я ищу более простое решение с подходом es6 / es7.

 let selectedID = [
    {
        "id": 7,
        "selected": true
    },
    {
        "id": 1,        
        "selected": true
    }
];

let baseID = [
    {
        "id": 7,
        "selected": false
    },
    {
        "id": 12,
        "selected": false
    },
    {
        "id": 13,
        "selected": false
    },
    {
        "id": 1,
        "selected": false
    },
    {
        "id": 9,
        "selected": false
    },
    {
        "id": 10,
        "selected": false
    }
];


const op = baseID.map( b => {
    return selectedID.map( f => {
     if(f.id === s.id) {
         return f;
     } else {
      return b;
     }
   });
});

console.log(op);

, но оно возвращает массив элементов, и каждый элемент представляет собой массив из 2 объектов.

[[ 
{id: 7, selected: true}
{id: 7, selected: false}
,[],...]

ожидаемый результат:

[{
            "id": 7,
            "selected": true
        },
        {
            "id": 12,
            "selected": false
        },
        {
            "id": 13,
            "selected": false
        },
        {
            "id": 1,
            "selected": true
        },
        {
            "id": 9,
            "selected": false
        },
        {
            "id": 10,
            "selected": false
        }
    ]

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете использовать find с map для поиска selectedID массив:

let selectedID = [
  {
    id: 7,
    selected: true
  },
  {
    id: 1,
    selected: true
  }
];

let baseID = [
  {
    id: 7,
    selected: false
  },
  {
    id: 12,
    selected: false
  },
  {
    id: 13,
    selected: false
  },
  {
    id: 1,
    selected: false
  },
  {
    id: 9,
    selected: false
  },
  {
    id: 10,
    selected: false
  }
];

const op = baseID.map(
  item => selectedID.find(selectedItem => item.id === selectedItem.id) || item
);

console.log(op);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...