如何获取此对象和数组。
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
进行了检查,但没有运气。
答案 0 :(得分:2)
使用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 :(得分:1)
map
确实是您想要的工具。我可能会将其与map
回调参数列表中的destructuring结合使用,并在结果值中分散属性:
const result = raw.map(({x, y}) => ({x, y, ...data}));
实时复制:
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
具有任何值为 objects 的属性(在您的示例中为data
没有),则使用spread将仅将引用复制到对象,它不会复制大量内容。因此,您所有的result
对象都应该共享它们。如果可以的话,您可以deep copy。
答案 2 :(得分:0)
我找到了解决方案;
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);
对此方法的一些反馈将不胜感激。寻找现在提供的解决方案。谢谢大家。