angular6实现对象转换数组对象
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实现对象转换数组对象的更多相关文章
- 简述JavaScript对象、数组对象与类数组对象
问题引出 在上图给出的文档中,用JavaScript获取那个a标签,要用什么办法呢?相信第一反应一定是使用document.getElementsByTagName('a')[0]来获取.同样的,在使 ...
- 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象
类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...
- javascript中的字符串对象和数组对象
1.javascript的对象的概念 在javascript中,除了null和undefined以处,其他的数据类型都被定义成了对象 也可以用创建对象的方法定义变量,string,math,array ...
- 微信小程序 - 对象转换成对象数组
后端传过来的一个个对象 {1,2,3,4},{1,3,5,},{1,3,5} 我们应该转化为数组对象 [{},{},{},{}] ,最后通过wx:for遍历到页面 示例图:
- js中的函数,Date对象,Math对象和数组对象
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
- 学习笔记:javascript内置对象:数组对象
1.数组对象的创建 1.设置一个长度为0的数组 var myarr=new array(); 2.设置一个长度为n的数组 var myarr=new arr(n); 3.声明一个赋值的指定长度 ...
- math对象与数组对象
1.math对象 属性 //PI 圆周率 方法 //random 随机数 var num= Math.random(); 生成0到1的随机数//round 四舍五入var num2 ...
- js json对象和数组对象
动态添加json对象: var json = {}; json['a'] = 'a'; 动态添加数组对象: var arr = []; arr['a'] = 'a';
- JS对象 Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的
Array 数组对象 数组对象是一个对象的集合,里边的对象可以是不同类型的.数组的每一个成员对象都有一个"下标",用来表示它在数组中的位置,是从零开始的 数组定义的方法: 1. 定 ...
随机推荐
- 根据不同访问设备跳转到PC页面或手机页面
目前很多网站都是采用了响应式自适应页面的设计了,根据访问设备的不同,显示不同的内容.但是还是会有一些节奏比较慢的网站,还是PC页面和手机PAD页面不同的访问域名.正好我这里有个需要,同一个域名要根据不 ...
- Ubuntu安装之python开发
Ubuntu安装之python开发 什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/ ...
- Binary Search 二分法方法总结
Binary Search 二分法方法总结 code教你做人:二分法核心思想是把一个大的问题拆成若干个小问题,最重要的是去掉一半或者选择一半. 二分法模板: public int BinarySear ...
- MinHook 分析01 (x86的jmp+offset类型hook)
MinHook的原理就在于重写目标函数.在这次分析的X86模式中,32位相对JMP覆盖了整个地址空间.因为在相对地址计算中溢出的位被忽略,所以在X86模式中,函数的地址是容易掌控的. 直接来进入正题. ...
- Spring Cloud各个组件的配套使用
我们从整体上来看一下Spring Cloud各个组件如何来配套使用: 从上图可以看出Spring Cloud各个组件相互配合,合作支持了一套完整的微服务架构. 其中Eureka负责服务的注册与发现, ...
- centos 设置中文
[root@mts /]# vim /etc/sysconfig/i18n 1 LANG="en_US.UTF-8" 2 SYSFONT="latarcyrheb-sun ...
- Python 字典dict相关知识
字典是无序的,多次print输出的结果不一样. 字典的key可以是数字.字符串.元组.布尔值(True为1,False为0,不可以和其他key值重复):列表和字典不能作为key. 字典的value可以 ...
- react native 打包上架
https://www.jianshu.com/p/ce71b4a8a246 react-native bundle --entry-file index.ios.js --platform ios ...
- linux修改默认语言
echo $PATH #查看当前语言LANG=en_US.UTF-8 #临时修改当前语言,修改为英文echo 'LANG=en_US.UTF-8' > /etc/sysconfig/i18n # ...
- Navicat连接mysql出现1045错误
使用Navicat连接mysql出现1045,可能的原因为忘记密码,下面方法可以帮助重置密码. 1,以管理员权限运行cmd程序: 2,cd C:\Program Files (x86)\MySQL\M ...