对于经常弄项目的来说,数组与数组对象的去重和相加

对于我来说,虽然已经敲代码有大半年了,不过仍然对数组与数组对象的去重和相加有了阴影,所以把这次的感谢写下来

一、数组对象的相加

jsondata的值:

var jsondata = []
var obj = []
jsondata = e.data var data_pie = new Array(); $.each(jsondata, function(index, item) { //hasOwnProperty : 查找obj数组中是否有‘name’属性 if(obj.hasOwnProperty(item.name)){ //如果没有,那么就让 数值 相加 obj[item.name] += (item.zongjinshui - item.zongchushui) / item.zongjinshui }else{ //如果有这个属性 那么 就直接赋值 obj[item.name] = (item.zongjinshui - item.zongchushui) / item.zongjinshui } });
console.log(obj)

打印obj的值:

 第二种循环方法

var jsondata = []
var obj = []
jsondata = e.data
                console.log(jsondata)
                var data_pie = new Array();
                $.each(jsondata, function(index, item) {
//第二种方法
if(obj[item.name]) { obj[item.name] += (item.zongjinshui - item.zongchushui) / item.zongjinshui } else { obj[item.name] = (item.zongjinshui - item.zongchushui) / item.zongjinshui } }); console.log(obj)

其中jsondata和obj的值是一样的。

  如果只拿到数组的话,到这一步已经好了,但是我的项目有时候要求的是数组对象,

//通过遍历obj数组 ,将obj的属性赋值
                $.each(obj, function(index, item) {
//这里需要自己打印看下index和item的值分别是什么,不要给属性加错了值 data_pie.push({
'value': item, 'name': index }) }); console.log(data_pie)

打印的data_pie:

   至此,数组与数组对象的相加已完成。

二、数组的去重

  当数组中有同样的属性,但是不需要相同的几条,那么就考虑去重了,只留下一条

//1 reduce去重,针对数组对象
let person = [
      {id: 0, name: "A"},
      {id: 1, name: "B"},
      {id: 2, name: "C"},
      {id: 3, name: "D"},
      {id: 1, name: "E"},
      {id: 2, name: "F"},   
 ];

 let obj = {};
 let peon = person.reduce((cur,next) => {
     obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
     return cur;
 },[]) //设置cur默认类型为数组,并且初始值为空的数组
 console.log(peon);
 //2 Set去重,针对纯数组元素
 let arr = [1,2,2];
 console.log([...new Set(arr)]); // [1,2]

原文链接:https://blog.csdn.net/qq_39045645/java/article/details/103383230

这个去重我没有这样试过,先保存下。

猜你喜欢

转载自www.cnblogs.com/wangrong-0823/p/12625535.html
今日推荐