javascript - 如何使用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",
},
]
解决方案
这可以通过使用数组映射方法遍历对象数组来实现,检查 id 是否等于“1”,然后使用 ES6 的扩展语法“合并”对象。
const result = my_obj.map(obj => {
if (obj['id'] === '1') {
return {...obj, ...merge_obj}
} else {
return obj;
}
})
console.log(result)
另外,只是一个快速的建议,尝试使用const
andlet
而不是var
!
推荐阅读
- r - 如何为 `rlang::exec` 指定包或命名空间?
- java - Apache Camel 中的整数拆分列表
- javascript - React Native Typescript 中的“导出默认值”导致解析语法错误
- css - 具有`位置:绝对的项目;顶部:0;left: 0;` 在 Chrome for Android 上与它的父级有差距
- android - Windows 10 中的 Cordova 设置面临模拟器错误
- spring-boot - 使用 swagger 的 pdf 格式的 api 文档
- python - 用于预测输出数据的前馈 ANN(工程动力学)
- kubernetes - Kubenetes 访问 api 网络
- kubernetes - 无法使用 nginx 入口控制器访问在集群内 pod 上运行的应用程序
- c# - Mongo to MySQL - 正确的关系设计