0

我正在使用 ajax 调用从服务器端检索值,这是从服务器端检索到的数组列表的格式。

[传入,0,INETCALL,0,ISD,31.8,本地,197.92,STD,73.2]

现在根据我的需要,我必须像这样在两个变量中打破这个数组列表..

var toc=传入,INETCALL,ISD,本地,STD

var callcost=0,0,31.8,197.92,73.2

我正在尝试使用 for 循环来做到这一点,但我没有得到确切的逻辑......

这是我的代码..

$(function () {    
    $.ajax({
        type: 'GET',
        url: 'getdata',
        async: false,
        dataType: "text",
        success: function (data) {

            var values = [];
            values = data;    
            values = values.replace('[', '');
            values = values.replace(']', '');    
            var array = values.split(",");

            for (var i in array) {

            }
        }
    });
});    

请大家帮帮我。提前致谢。

4

3 回答 3

1

尝试使用$.isNumeric() 之类的,

var arr=['INCOMING',0,'INETCALL',0,'ISD',31.8,'LOCAL',197.92,'STD',73.2];
var str=[],
    num=[];
for(var i=0,len=arr.length;i<len;i++){
   $.isNumeric(arr[i]) ?  num.push(arr[i]) :  str.push(arr[i]);
}
console.log(num);// returns array of numbers use num.join(',') to get string
console.log(str);// returns array of string use str.join(',') to get string

演示

于 2013-11-07T07:47:56.510 回答
1

首先,数据似乎已经是一个数组,只需解析它

var array = JSON.parse(data);

或者,如果您也可以控制服务器端代码,请使其返回 json-data 而不是纯文本。这样,当它传递给回调时,它的数组就可以使用了!

如果要获取循环中的所有数字,请使用 isNumeric,如果每隔一个,请在索引上执行 %1,即:

var a1 = [];
var a2 = [];
for(var i=0;i<array.length;i++){
   if(i % 1 == 0){
     a1.push(array[i]);
   } else {
     a2.push(array[i]);
   }
}
于 2013-11-07T07:51:37.313 回答
0

检查这个小提琴 http://jsfiddle.net/2sGjZ/

var myArray = ['INCOMING','0','INETCALL','0','ISD','31.8','LOCAL','197.92','STD','73.2'];
    var tocArr = new Array();
    var callcostArr = new Array();
    var j = 0; var k= 0;
    for ( var i = 0; i < myArray.length; i = i + 1 ) {
        if(i % 2 == 1){
             tocArr[j] = myArray[ i ];
            j++;
        }else{
            callcostArr[k] = myArray[ i ];
            k++;
        }
    }
    var toc = tocArr.toString();
    var callcost = callcostArr.toString();
    alert( toc );
    alert( callcost );
于 2013-11-07T08:03:07.527 回答