добавить статические элементы в объекте к каждому объекту в массиве объектов javascript - PullRequest
0 голосов
/ 09 июня 2019

Как мне взять этот объект и массив.

const data = {
    type: "hello",
    point: 1.8
};

const raw = [
    {
        x: [1, 2],
        y: [-1.1, -1.2]
    },
    {
        x: [14, 24],
        y: [-1.14, 1.24]
    }
];

Затем «добавить» элементы в объекте data к каждому объекту в массиве raw. Желаемый конечный результат:

const result = [
    {
        x: [1, 2],
        y: [-1.1, -1.2],
        type: "hello",
        point: 1.8
    },
    {
        x: [14, 24],
        y: [-1.14, 1.24],
        type: "hello",
        point: 1.8
    }
];

Я пытался использовать map, но этот объект работает с массивами, затем я посмотрел на использование Object.keys, но мне не повезло.

Ответы [ 3 ]

2 голосов
/ 09 июня 2019

Используйте map с разбрасыванием:

const data = {type:"hello",point:1.8};
const raw = [{x:[1,2],y:[-1.1,-1.2]},{x:[14,24],y:[-1.14,1.24]}];
const result = raw.map(e => ({ ...e, ...data }));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: auto; }

Синтаксис ES5:

var data = {type:"hello",point:1.8};
var raw = [{x:[1,2],y:[-1.1,-1.2]},{x:[14,24],y:[-1.14,1.24]}];
var result = raw.map(function(e) { 
  return Object.assign({}, e, data);
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: auto; }
1 голос
/ 09 июня 2019

map действительно тот инструмент, который вам нужен.Вероятно, я бы совмещал это с деструктуризацией в списке параметров обратного вызова map и разбросом свойств в результирующем значении:

const result = raw.map(({x, y}) => ({x, y, ...data}));

Live Copy:

const data = {
    type: "hello",
    point: 1.8
};
const raw = [
    {
        x: [1, 2],
        y: [-1.1, -1.2]
    },
    {
        x: [14, 24],
        y: [-1.14, 1.24]
    }
];
const result = raw.map(({x, y}) => ({x, y, ...data}));
console.log(result);

Обратите внимание, что если data имел какие-либо свойства, значения которых были объектов (data в вашем примере нет), использование распространения будет копироватьтолько ссылки на объекты, он не будет делать глубокие копии.Таким образом, все ваши result объекты должны делиться ими.Вы могли бы глубокая копия , если это было уместно.

0 голосов
/ 09 июня 2019

Я нашел решение;

const data = {type:"hello",point:1.8};
const raw = [{x:[1,2],y:[-1.1,-1.2]},{x:[14,24],y:[-1.14,1.24]}];
const result = raw.map(r => Object.assign(r, data));
console.log(result);

Некоторые отзывы об этом подходе приветствуются. Ищите решения, предоставленные сейчас. Спасибо всем.

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