【无标题】

嗨,今天周二了哎! 期待周五

文章目录

  • 前言
  • 一、js只保留数组对象的某个属性
  • 二、合并公共类型的数据
  • 二、选择树形结构的数据,并保留每个节点的name
  • 三、input 框 更改不了值
  • 四、解决[Vue warn]: Unknown custom element: <ag> - did you register the component correctly? For recursive
  • 五、夫子组件传值


前言

啊哈哈哈啊,心情好的不像话,正文开始前,先夸夸自己,我真的太棒啦!!
因为今天搞定了两个问题 ,拿到问题的第一反应就是 觉得好麻烦呀,但是觉得可以挑战一下,在过程中遇到不少问题,尽管不是很难,日常开发中也总会遇到,那就记录一下叭 ,
嘿嘿,今天也太棒了叭,超级超级
啊啊啊啊啊啊啊,ctrl 不住自己的喜悦了


提示:以下是本篇文章正文内容,下面案例可供参考

一、js只保留数组对象的某个属性


  let data = [{ id: 1, name: '哈哈' }, { id: 2, name: '嘻嘻' }]
  let newData = []
  data.map(item => {
    newData.push(Object.assign({}, { name: item.name, }))
  })
  console.log(newData, 'pyq')

map 和 foreach 相似,但是map 有返回值

二、合并公共类型的数据

 let data = [
        {
          cost_name: "分检费",
          number: "12",
          unit: "吨",
          total_price: "60"
        },
        {
          cost_name: "冷冻费",
          number: "5",
          unit: "吨",
          total_price: "10"
        },
        {
          cost_name: "分检费",
          number: "6",
          unit: "吨",
          total_price: "30"
        },
        {
          cost_name: "冷冻费",
          number: "30",
          unit: "吨",
          total_price: "600"
        },
        {
          cost_name: "包装费",
          number: "12",
          unit: "吨",
          total_price: "100"
        }
      ];
 let newData = [
        {
          cost_name: "分检费",
          number: "18",
          unit: "吨",
          total_price: "90"
        },
        {
          cost_name: "冷冻费",
          number: "35",
          unit: "吨",
          total_price: "610"
        },
        {
          cost_name: "包装费",
          number: "12",
          unit: "吨",
          total_price: "100"
        }
      ];

我们的需求是将 data 的数据合并称 newData 的数据,先将数据按公共合并

	 先将数据扁平化
	  let arr = [];
      let obj = {};
      let objChild = {};
      data.forEach(item => {
        obj = {
          cost_name: item.cost_name,
          unit: item.unit,
          spend: []
        };
        objChild = {
          number: item.number,
          total_price: item.total_price
        };
        obj.spend.push(objChild);
        arr.push(obj);
      });
结果
 let data = [
        {
          cost_name: "分检费",
          unit: "吨",
          spend:[
				{ number: "12",total_price: "60" }
			]
        },
        {
          cost_name: "冷冻费",
          unit: "吨",
           spend:[
				{ number: "5",total_price: "10"}
			]       
        },
        {
          cost_name: "分检费",
          unit: "吨"
          spend:[
				{ number: "6",,total_price: "30"}
			]    
        },
        {
          cost_name: "冷冻费",
          unit: "吨",
          spend:[
				{ number: "30",total_price: "600"}
			]    
        },
        {
          cost_name: "包装费",
          unit: "吨",
          spend:[
				{ number: "12",total_price: "600"}
			]  
        }
      ];

我们的需求是将 数据 再次处理成为我们想要的结果

  	  let newData = [];
      let newObj = {};
      arr.forEach((el, i) => {
        if (!newObj[el.cost_name]) {
          // 循环遍历 arr 每一项,如果费用不存在,就将这个条数据添加至新数组里
          // 并且给 newObj 对象费用类别做个标记,下次再走这个费用类别时,说明存在就走另一个判断
          // {分检费:true,包装费:true,....} 
          newData.push(el);
          newObj[el.cost_name] = true;
        } else {
          // 在收集的新数据里,我们要用之前的数据和当前项判断
          // 找到相同项,添加至新的新数据项里
          newData.forEach(el2 => {
            if (el2.cost_name === arr[i].cost_name) {
              el2.spend = [...el2.spend, ...arr[i].spend]; // es6语法
            }
          });
        }
      });

二、选择树形结构的数据,并保留每个节点的name

三、input 框 更改不了值

四、解决[Vue warn]: Unknown custom element: <ag> - did you register the component correctly? For recursive

五、夫子组件传值

你可能感兴趣的:(javascript,前端,vue.js)