猿问

将对象中的静态元素附加到对象数组中的每个对象javascript

我如何获取这个对象和数组。


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但没有运气。


神不在的星期二
浏览 149回答 3
3回答

慕沐林林

map确实是您想要的工具。我可能会将它与回调参数列表中的解构map和结果值中的属性传播结合起来: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有任何属性的值是对象(data在您的示例中不是),则使用 spread 将仅复制对对象的引用,而不会进行深度复制。所以你所有的result对象都应该共享它们。如果相关,您可以进行深度复制。

白猪掌柜的

我找到了解决办法;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);对此方法的一些反馈将不胜感激。寻找现在提供的解决方案。谢谢你们。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答