js 数据拼接

背景,在父子组件通信的时候,数据需要互通,你的数据也许就需要数据的拼接

现知范围:
父子组件通信:参数拼接
加载数据完成后,设置数据,数组类型拼接
常用:
1.object.assign(1,2,……)
2.一个一个的去拼接赋值

object.assign(1,2,……)

解释:
一,1和2若有相同类型且名称相同,2会覆盖1,(多退少补),若有不同的字段名称,就不会被覆盖,保存下来,拼接在一起
二,object.assign可以克隆,当1是空(对象,数组,……),2就会整个覆盖1,达到克隆效果
三,结果返回同类型(数组就是数组,对象就是对象……)
优点,当字段名称多,object.assign简化代码,便于维护

//提示:这个是小程序代码啦
setResData(resData) { //专项检查 设置统计数据   提示:resData是后端来的数组
    //将省市县三个数组,拼接为一个数组
    let list = [];
    for (let key in resData) { //此处的key相当于    list_cnty    list_city
      if (resData[key] === null || resData[key].length === 0) continue;
      if (key === 'list_prv' && resData[key].length > 0) {
        resData[key] = resData[key].map(item => {
          return Object.assign(item, {
            CITY: item.NAME,
          },this.addBFB(item)); 
        })
      } else if (key === 'list_city') {
        resData[key] = resData[key].map(item => {
            return Object.assign(item, {
              CITY: item.NAME,
              show: false,
            },this.addBFB(item));
        })
      } else if (key === 'list_cnty'){
        resData[key] = resData[key].map(item => {
            return Object.assign(item, {
              CNTY: item.NAME,
            },this.addBFB(item));
         
        })
      }else{
        alert('获取数据错误!');
      }
      list = list.concat(resData[key]);
    }
    return list;
  },
  addBFB (item) {//添加百分比
    let obj = {};
    if (item.JPRV) {//省计划水库不为0或空
      obj = Object.assign(obj, {
        PRVJB: ((item.YPRV / item.JPRV) * 100).toFixed(2) + '%',
      });
    } 
    if (item.JCITY) {//市计划水库不为0或空
      obj = Object.assign(obj, {
        CITYJB: ((item.YCITY / item.JCITY) * 100).toFixed(2) + '%',
      });
    }
     if (item.JCNTY) {//县计划水库不为0或空
      obj = Object.assign(obj, {
        CNTYJB: ((item.YCNTY / item.COUNT) * 100).toFixed(2) + '%',
      });
    }
    console.log(obj)
    return obj;
  },

js 数据拼接_第1张图片

一个一个的去拼接赋值

//加载数据	父级调用子级数据
			GJCX_son(searchParams) { //searchParams是子组件传过来的数据
				this.params.CITY = searchParams.vCty1; //将子组件数据赋值给父组件,这边是单个拼接赋值
				this.params.CNTY = searchParams.vCnt1;
				this.params.TOWN = searchParams.vTwn1;
				this.params.PRSC = searchParams.scale;
				this.params.DDTYPE = searchParams.DDTYPE;
				this.params.DDTIME1 = searchParams.DDTIME1;
				this.params.ZXTIME1 = searchParams.ZXTIME1;
				this.params.DDTIME2 = searchParams.DDTIME2;
				this.params.ZXTIME2 = searchParams.ZXTIME2;
				this.params.index = 1;
				this.loadData(1);
			},

js 数据拼接_第2张图片

解释:
优点:等于号前后字段名称可以不一样,可以赋值过去,这就是object.assign,用不来就要用这个了

鸡肋(但适用现阶段小白的我呀):字段名称少的时候用这个,易于理解

使用性:object.assign(易于优化) > 个个赋值拼接

你可能感兴趣的:(必须掌握,javascript)