为了账号安全,请及时绑定邮箱和手机立即绑定

如何将键值对映射到对象中的每个索引

如何将键值对映射到对象中的每个索引

一只斗牛犬 2022-06-16 17:27:49
我正在尝试使用 map 向我的对象添加一个新的键和值对。该值只是一个空数组,因此我可以稍后将对象推入其中。这是我的代码:let columns = [    {        _id: "5e8af4591c9d440000a1a4ed",        column_name: "Opportunities",        column_value: 0,        column_percentage: 0.25    },    {        _id: "5e8af4a81c9d440000a1a4ee",        column_name: "Prospects",        column_value: 0,        column_percentage: 0.5    }];let output = columns.map(() => ({posts: []}));console.log(output)这是我希望我的对象在映射后的样子:let columns = [    {        _id: "5e8af4591c9d440000a1a4ed",        column_name: "Opportunities",        column_value: 0,        column_percentage: 0.25,        posts: []    },    {        _id: "5e8af4a81c9d440000a1a4ee",        column_name: "Prospects",        column_value: 0,        column_percentage: 0.5,        posts: []    }];但目前的输出是:[    {        posts: []    },    {        posts: []    }]
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您的代码不起作用,因为新数组将包含映射器函数返回的内容。


即使它与原始数组的内容无关,它也会保持其返回值不变。


因此,如果您返回一个 object {posts:[]},它将是输出。


您必须将该对象合并到映射器函数内的当前数组元素中。


您可以使用对象扩展语法来合并两个对象:


let columns = [

    {

        _id: "5e8af4591c9d440000a1a4ed",

        column_name: "Opportunities",

        column_value: 0,

        column_percentage: 0.25

    },

    {

        _id: "5e8af4a81c9d440000a1a4ee",

        column_name: "Prospects",

        column_value: 0,

        column_percentage: 0.5

    }

];


columns.map(obj => ({...obj, posts: []}));

但是,这是一个相对较新的功能,因此,如果您需要更大的支持,您可以使用Object.assign:


let columns = [

    {

        _id: "5e8af4591c9d440000a1a4ed",

        column_name: "Opportunities",

        column_value: 0,

        column_percentage: 0.25

    },

    {

        _id: "5e8af4a81c9d440000a1a4ee",

        column_name: "Prospects",

        column_value: 0,

        column_percentage: 0.5

    }

];


columns.map(obj => Object.assign({posts: []}, obj));


查看完整回答
反对 回复 2022-06-16
?
不负相思意

TA贡献1777条经验 获得超10个赞

你可以试试:

let newColumns = columns.map((item) => Object.assign({}, item, {posts: []});  
console.log(newColumns);


查看完整回答
反对 回复 2022-06-16
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

使用forEach()

columns.forEach(el => el.posts=[] )

let columns = [

    {

        _id: "5e8af4591c9d440000a1a4ed",

        column_name: "Opportunities",

        column_value: 0,

        column_percentage: 0.25

    },

    {

        _id: "5e8af4a81c9d440000a1a4ee",

        column_name: "Prospects",

        column_value: 0,

        column_percentage: 0.5

    }

];

columns.forEach(el => el.posts=[] )


console.log(columns)


查看完整回答
反对 回复 2022-06-16
  • 3 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号