JSON 去重并将属性相加

本贴最后更新于 2126 天前,其中的信息可能已经时移世易

1.注意:本教程使用替换的方法只适用于 键值对为 [{"name":"1301","data","1"}]此类型的数据
2.我要干什么:我将会把后台返回的 JSON 数据中地区的区号转换为实际的地区名称,并且将重复地区的 data 相加


数据为:

  var data = [ 
             {"name":"1301","data":"1"},
             {"name":"1301","data":"2"},
             {"name":"1301","data":"0"},
             {"name":"1302","data":"10"},
             {"name":"1302","data":"20"},
             {"name":"1303","data":"122"},
             {"name":"1305","data":"13"}
            ];

name 去重 data 相加方法

  /*
  *参数
  *	bef_obj : 需要替换的json对象
  *	aft_obj : 替换之后的json对象
  *  
  * return : 返回操作号的JSON对象
  * warning : 如果需要操作的对象为空、为未定义、为空字符串都会返回-1,传参错误也会返回-1
  */
  function Dist_Num_Repl(bef_obj,aft_obj){
	  if(bef_obj==="undefined" && bef_obj === "" && bef_obj === null)
		  return -1

	  bef_obj.forEach(el=>{
		  const result = data3.findIndex(ol=>{return el.name === ol.name})
		  if(result!== -1){
			  data3[result].data = Number(data3[result].data) + Number(el.data)
		  }else{
			  el.data = Number(el.data)
			  data3.push(el)
		  } 
	  })
	  return data3
  }

替换区号为地区名方法

 /*
  * param:obj_传入JSON对象
  * return : 返回替换好的JSON对象
  * warning:如果obj是空或等于空字符串或为空都会导致程序结束并返回-1
  */
  function To_Rep_It(obj){
	  if(obj === "undefined" && obj === null && obj === "")
		  return -1

	  obj = JSON.stringify(obj)
	  var af_o = obj.replace("1301","石家庄")
			.replace("1302","唐山")
			.replace("1303","秦皇岛")
			.replace("1305","邢台")
			.replace("1304","邯郸")
			.replace("1306","保定")
			.replace("1307","张家口")
			.replace("1308","承德")
			.replace("1309","沧州")
			.replace("1310","廊坊")
			.replace("1311","衡水")
	  return JSON.parse(af_o)
  }

使用方法

//首先定义一个变量用来接受去重并将data相加的数组
let re_data = []

//调用去重data属性相加方法,data为要操作的JSON对象,re_data是操作之后的JSON对象
re_data = Dist_Num_Repl(data,re_data)

//调用替换地区代码方法
re_data = To_Rep_It(re_data)

查看效果

jsonpng

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    713 引用 • 1174 回帖 • 119 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 190 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...