js对字符串replace等操作

面对这样的字符串data:   {1=[5, 3, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],2=[6, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],3=[5, 5, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],4=[4, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],5=[20, 16, 20, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444], 10=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}

data从后台传过来本为map,可是到前台成了这样的格式,要运用到echarts上的line图需要做组装

注:${chartResult}直接这样用后台传来的数据是无法展现的,为空,必须把它隐藏到一个input里取出,如<input id="chartResult" value="${chartResult}" hidden=true />

    var data = $("#chartResult").val();
    var data1 = data.substr(1,data.length-3);

注:data1: 1=[5, 3, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],2=[6, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],3=[5, 5, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],4=[4, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444],5=[20, 16, 20, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444], 10=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0


    var data2 = data1.split("=[").join('*').split("],").join('*');
    alert(data2);

注:js只支持replace,一般只能替换第一个字符,不支持replaceAll,而str.split(replaceStr).join('')可实现全部替换

注:data2: 1*5, 3, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444* 2*6, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444* 3*5, 5, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444* 4*4, 4, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444* 5*20, 16, 20, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444* 10*0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0


    var str = data2.split("*");

注:这里不能用空格分隔,因为数字之间的逗号之后也有空格,最好用空格之外的符号如*


    var arr = [];
    for(var index in str){
        arr[index] = str[index];
    }

    var qtyNum = [];
    for(var i = 8;i<=24;i++){
       qtyNum.push("qty"+i);
    }
    alert(qtyNum);
    var leaveDcAndNoInDepotQty = []; //出分拣未入站单量
    var inDepotAndNoDeliveryQty = []; //入站未配送单量
    var outDepotAndNoReturnQty = []; //出站未回单单量
    var deliveryFinishedQty = []; //配送结束单量
    var totalQty = []; // 总单量
    

注:arr[1],arr[3]等只是字符串,需要组装在list里面供line来使用


    var leaveStr = arr[1].split(",");
    for(var index in leaveStr){
        leaveDcAndNoInDepotQty.push(leaveStr[index]);
    }
    var inStr = arr[3].split(",");
    for(var index in inStr){
        inDepotAndNoDeliveryQty.push(inStr[index]);
    }
    var outStr = arr[5].split(",");
    for(var index in outStr){
        outDepotAndNoReturnQty.push(outStr[index]);
    }
    var deliveryStr = arr[7].split(",");
    for(var index in deliveryStr){
        deliveryFinishedQty.push(deliveryStr[index]);
    }
    var totalStr = arr[9].split(",");
    for(var index in totalStr){
        totalQty.push(totalStr[index]);
    }
    
    alert(leaveDcAndNoInDepotQty);

5, 3, 5, 11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 111, 222, 333, 444

 

posted @ 2016-03-15 10:56  静子1019  Views(384)  Comments(0Edit  收藏  举报