Sort and merge JSON keys with matching values

后端 未结 3 1107
一个人的身影
一个人的身影 2021-01-23 13:19

My JSON looks like this:

json = [
  {
    type: \"big\"
    date: \"2012-12-08\"
    qty: 6
  }
  {
    type: \"small\"
    date: \"2012-12-08\"
    qty: 9
  }
          


        
3条回答
  •  没有蜡笔的小新
    2021-01-23 14:02

    One more to mix which I think this is the longest answer of them all :-)

        var sortedArray = [];
    
        function traverseArray(element, index, array) {
            
            var found = false;
            
            for (i = 0; i < sortedArray.length; i++) {
                if (sortedArray[i].type === element.type) {
                    if (sortedArray[i].date.substring(0, 7) === element.date.substring(0, 7)) {
                        sortedArray[i].qty = (sortedArray[i].qty + element.qty);
                        console.log(element);
                        found = true;
                    }
                }
            }
            
            if (!found)
                sortedArray.push(element);
        }
        
        
        
        var data = [{
            type: "big",
            date: "2012-12-08",
            qty: 6
        }, {
            type: "small",
            date: "2012-12-08",
            qty: 9
        }, {
            type: "big",
            date: "2012-12-15",
            qty: 4
        }, {
            type: "small",
            date: "2012-12-07",
            qty: 7
        }, {
            type: "small",
            date: "2012-11-07",
            qty: 3
        }];
        
        data.forEach(traverseArray);
        
        sortedArray.forEach(print);
        
        function print(element, index, array) {
            var line = "[ type: " + element.type + ", date: " + element.date + ", qty: " + element.qty + "]";
          $("#result").append(line  +  " 
    "); }
    
    

提交回复
热议问题