0

我有一个 jquery 变量,它在控制台中将值显示为 ..

["INCOMING", 0, "INETCALL", 0, "ISD", 31.8, "LOCAL", 197.92, "STD", 73.2]

现在根据我的需要,我必须打破这些价值观并使它像这样

["INCOMING", 0],["INETCALL", 0],["ISD", 31.8],["LOCAL", 197.92],["STD", 73.2]

但是这些值我需要动态地以所需的格式生成,因为这是从数据库接收的。

这是我从服务器端获取值的ajax调用..

var dbdata="";
        $(document).ready(function() {
            $.ajax({
                type: 'GET',
                url: 'getPieChartdata',
                async:false,
                dataType: "text",
                success: function(data) {
                   dbdata=JSON.parse(data);
                }
            });
            console.log(dbdata);
        });
4

3 回答 3

1

以下应该作为ajax调用的新成功函数。假设它已经是一个有效的数组,它将把 dbdata var 转换为所需的数组格式。为了获得最佳实践,您应该在运行 for 循环之前添加一些代码,以确保它既是有效数组又是您期望的格式。

            success: function(data) {
               var dbdata=JSON.parse(data);
               var i;
               var fancy_array = [];
               for(i = 0; i < dbdata.length;i=i+2)
               {
                    var item = [dbdata[i], dbdata[i+1]];
                    fancy_array.push(item);
               }
               console.log(fancy_array);
            }
于 2013-11-08T04:01:19.590 回答
1

您不能dbdata在成功回调之外使用。您需要按照success: handleData. 但是,将数据分成块非常容易。

var data = ["INCOMING", 0, "INETCALL", 0, "ISD", 31.8, "LOCAL", 197.92, "STD", 73.2];
var chunks = [];

for( var i = 0, l = data.length; i < l; i += 2 ){
  chunks.push(data.slice(i, i + 2));
}
于 2013-11-08T04:05:23.667 回答
0

我知道这个问题已经得到解答,但这里还有两个片段可以从不同的角度看待解决方案:

var data = ["INCOMING", 0, "INETCALL", 0, "ISD", 31.8, "LOCAL", 197.92, "STD", 73.2];
var chunks = data.join().match(/[a-zA-Z]+/g).map(function (v, i) {
    return [v, a[1+i*2]]
})
var data = ["INCOMING", 0, "INETCALL", 0, "ISD", 31.8, "LOCAL", 197.92, "STD", 73.2];
var chunks = a.reduce(function (out, value, i, arr) {
    return out.concat.apply(out, i%2 ? null : [[[arr[i],arr[i+1]]]])
}, [])
于 2013-11-08T06:32:15.287 回答