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

How to break a jquery variable dynamically based on condition

本文关键字:jquery 变量 动态 何根 条件      更新时间:2023-09-26

我有一个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]

但是我需要在所需的 formate 中动态地制作这些值,因为它是从数据库。

这是我从服务器端获取值的 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);
        });

以下内容应该作为 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);
            }

不能在成功回调之外使用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));
}
我知道

这个问题已经回答了,但这里有两个片段可以从不同的角度查看解决方案:

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]]]])
}, [])