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

如何在javascript中使用map()循环

如何在javascript中使用map()循环

至尊宝的传说 2021-11-25 16:40:14
我有这样的结构:let MainItem = [ {    "Id": "1",    "Cost": "1000"  },  {    "Id": "2",    "Cost": "5000"  },  {    "Id": "3",    "Cost": "2000"  },  {    "Id": "4",    "Cost": "3000"  }];我将Cost使用map()循环更改每个元素的值并将其存储在NewMainItem.let NewMainItem = MainItem.map((item, i) => {  item.cost = item.cost + 1000  return item});console.log(MainItem)console.log(NewMainItem)主要的问题是,通过改变Cost在NewMainItem,价值 Cost在MainItem也将被改变,但我不并不想这样做。通过使用map()循环为什么主对象(MainItem)也会被改变?
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您应该使用map从现有对象创建新对象,而不是修改它们。


您可以使用扩展运算符来创建一个新项目,如下所示:


{ ...item, Cost: parseFloat(item.Cost) + 100 };


使用这里parseFloat是因为Costs 值在您的代码段中设置为字符串。随意更改它,因为它适合您的需要。


见下面的片段:


let MainItem = [

 {

    "Id": "1",

    "Cost": "1000"

  },

  {

    "Id": "2",

    "Cost": "5000"

  },

  {

    "Id": "3",

    "Cost": "2000"

  },

  {

    "Id": "4",

    "Cost": "3000"

  }

];


let NewMainItem = MainItem.map((item, i) => {

  return { ...item, Cost: parseFloat(item.Cost) + 100 };

});

console.log(MainItem)

console.log(NewMainItem)


查看完整回答
反对 回复 2021-11-25
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您可以分配一个具有所需更改值的新对象。


var mainItem = [{ Id: "1", Cost: "1000" }, { Id: "2", Cost: "5000" }, { Id: "3", Cost: "2000" }, { Id: "4", Cost: "3000" }],

    newMainItem = mainItem.map(item => Object.assign({}, item, { Cost: +item.Cost + 1000 }));


console.log(mainItem);

console.log(newMainItem);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2021-11-25
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信