1 使用表单获取到数据以后,是对象类型的数据如下图
而后台需要返回的数据是这种key:value的形式传入
2 废话不多说直接上代码(代码只截取部分,仅供参考跑不起来,最后又一个小demo可以运行)
public discountArr = []; // 折扣数组容器 public discountContent = { 'name': '', 'value': '' }; // 折扣转换对象容器 public setDiscount = {}; // 折扣返回数据 ngOnInit() { // 页面初始化发送请求获取数据折后 this .service.getProductDiscount( this .userId).subscribe(data => { if (data.code !== 0 ) { // TODO 错误处理 console.log(data.message); } else { 返回成功后把获取到的数据赋值给页面的数据 console.log(data, '折扣' ); this ._discount.EIP = data.result.EIP; this ._discount.EBS = data.result.EBS; this ._discount.ECS = data.result.ECS; this ._discount.SLB = data.result.SLB; this ._discount.OSS = data.result.OSS; this ._discount.CPS = data.result.CPS; this ._discount.CAAS = data.result.CAAS; this ._discount.VPC = data.result.VPC; this ._discount.SBW = data.result.SBW; this ._discount.RDSMysql = data.result.RDSMysql; this ._discount.CDN = data.result.CDN; } }); // 表单获取到的数据 this .discount = this .fb.group({ EIP: [ 10 , [Validators.required]], EBS: [ 9 , [Validators.required]], ECS: [ null , [Validators.required]], SLB: [ null , [Validators.required]], OSS: [ null , [Validators.required]], CPS: [ null , [Validators.required]], CAAS: [ null , [Validators.required]], VPC: [ null , [Validators.required]], SBW: [ null , [Validators.required]], RDSMysql: [ null , [Validators.required]], CDN: [ null , [Validators.required]], }); console.log( this .discount.value); } // 表单提交执行函数 onSubmit() { // tslint:disable-next-line:forin // 循环表单获取的数据 for (const key in this .discount.value) { // 每次执行行前让新对象为空 this .discountContent = { 'name': '', 'value': '' }; // 如果为空的话 if (! this .discountContent[key]) { // 把拆分开的数据分别放入key value this .discountContent.name = key; this .discountContent.value = this .discount.value[key]; } // 每次拆分成功插入数组 this .discountArr.push( this .discountContent); } // 转换成后台需要的数据格式 this .setDiscount = { operatorId: this .marketId, discount: this .discountArr, }; console.log( this .setDiscount); // 发送修改记录 this .service.changeProductDiscount( this .userId, this .setDiscount).subscribe(data => { if (data.code != 0 ) { // TODO 错误处理 this .notification.create(`error`, '失败' , data.message); } else { this .notification.create(`success`, '成功' , '折扣已修改成功' ); } }); }
3 数据转换 demo 示例 (这个可以跑)
<! DOCTYPE html > < html > < head > < title ></ title > </ head > < body > </ body > < script type ="text/javascript" > var json = { " CAAS " : 10 , " CDN " : 10 , " CPS " : 10 , " EBS " : 10 , " ECS " : 10 , " EIP " : 10 , " OSS " : 10 , " RDSMysql " : 10 , " SBW " : 10 , " SLB " : 10 , " VPC " : 10 }; var arr = []; var json1 = {}; for (let key in json){ json1 = {}; if ( ! json1[key]){ json1.name = key; json1.value = json[key]; } arr.push(json1); } console.log(arr); </ script > </ html >
查看更多关于angular6实现对象转换数组对象的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did222941