有如下需求:
A对象:
let objA= { id: "", appId: "", appkey: "", serverUrl: "", orgId: "" }
B对象:
let objB={ "appId": "2c5432d755", "agentPhone": "133****2345", "lastReportTime": null, "address": "北京市海淀区", "idType": "201", "orgId": "lx", "serverUrl": "http://www.imqd.cn", "companyName": "(生产环境)联想集团有限公司", "agentName": "联*1", "description": "111", "dataState": 1, "appkey": "430624199010227319", "idNo": "13312342345", "telPhone": null, "creditCode": "911101088020176135", "createTime": "2023-04-04 02:41:49", "legalPerson": "杨元庆", "id": 4, "status": 0 }
现在A对象的值是空的,需要从B对象中提取对应的键值对到A对象中。如何快速实现?
答案1:
Object.keys(objA).forEach((key) => { objA[key] = objB[key]; });
原理,其实就是Object.keys
方法的运用。
Object的这三个方法,可以将key,values或键值对转为数组,然后就可以用数组的方法了。
Object.keys
方法会将ObjA
的每一个Key
变成数组:
// 运行 Object.keys(objA)的结果为: [ "id", "appId", "appkey", "serverUrl", "orgId" ]
再循环,去取objB
对象中对应的key值,相当于是过滤了该对象。
翻译过来,其实上面的代码不用循环,就像这样写的:
objA.id = objB.id; objA.appId = objB.appId; objA.appkey = objB.appkey; ...
最终的结果A对象就有了如下的值:
let objA= { "id": 4, "appId": "2c54f6d755", "appkey": "430624199010227319", "serverUrl": "http://www.imqd.cn", "orgId": "lx" }
如果你在web前端开发、面试、前端学习路线有困难可以加我V:imqdcnn。免费答疑,行业深潜多年的技术牛人帮你解决bug。
祝你能成为一名优秀的WEB前端开发工程师!