如何根据条件动态破坏jquery变量

时间:2013-11-08 03:49:49

标签: javascript jquery ajax

我有一个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);
        });

3 个答案:

答案 0 :(得分: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);
            }

答案 1 :(得分: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));
}

答案 2 :(得分: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]]]])
}, [])