我有一个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);
});
答案 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]]]])
}, [])