首页 > 解决方案 > 如何使用javascript覆盖现有对象

问题描述

我想知道如何在对象中添加现有的匹配值并在 javascript 中添加剩余的值,例如,我需要将 id 为 '1' 的 my_obj 与 merge_obj 合并,匹配的值 targetAmount 只替换,剩余的属性需要添加

我试过了

var filtervalue = my_obj.filter((e)=>e.id == "1").map((e)=>Object.assign({},e[0], merge_obj));

const merge_obj = {
  targetAmount: 50688.97,
  type: "REGULAR"
}

const my_obj = [
  {
    id: "1",
    logo: "img1.png",
    name: "fund",
    speed: "1 Days",
    targetAmount: "2000"
  },
  {
    id: "2",
    logo: "img2.png",
    name: "transfer",
    speed: "1 Days",
    targetAmount: "3000"
  },
]


Expected Output:
var my_obj = [
{
    id: "1",
    logo: "img1.png",
    name: "fund",
    speed: "1 Days",
    targetAmount: 50688.97,
    type: "REGULAR",
  },
  {
    id: "2",
    logo: "img2.png",
    name: "transfer",
    speed: "1 Days",
    targetAmount: "3000",
  },
]

标签: javascriptjqueryarraysobject

解决方案


这可以通过使用数组映射方法遍历对象数组来实现,检查 id 是否等于“1”,然后使用 ES6 的扩展语法“合并”对象。

const result = my_obj.map(obj => {
  if (obj['id'] === '1') {
    return {...obj, ...merge_obj}
  } else {
    return obj;
  }
})

console.log(result)

另外,只是一个快速的建议,尝试使用constandlet而不是var!


推荐阅读