Javascript 将对象数组更改为CSV模式

Javascript 将对象数组更改为CSV模式,javascript,arrays,loops,object,csv,Javascript,Arrays,Loops,Object,Csv,我有以下数组: var objRow = [ { 2011-09-20 : [0, 100, 0], customerID : C1101, ANI : 1234 }, { 2011-09-25 : [0, 0, 0], customerID : C1101, ANI : 1234 }, { 2011-09-20 : [0, 500, 0],

我有以下数组:

var objRow = [
    {
        2011-09-20 : [0, 100, 0],
        customerID : C1101,
        ANI : 1234
    },
    {
        2011-09-25 : [0, 0, 0],
        customerID : C1101,
        ANI : 1234
    },
    {
        2011-09-20 : [0, 500, 0],
        customerID : C1102,
        ANI : 5678
    },
    {
        2011-09-22 : [0, 0, 50],
        customerID : C1102,
        ANI : 5678
    }
]
我想从上面的数组创建CSV数据。但是,我无法将该阵列更改为此CSV模式:

1234, C1101, 0, 0, 100, 0, 0, 0
5678, C1102, 0, 0, 500, 0, 0, 50
我尝试使用reduce对
customerID
进行分组,因为每个对象中的第一个索引是date。我有一些日期:

var dateArr = ["2011-09-20", "2011-09-22", "2011-09-25"];
这是我的代码:

var result = objRow.reduce(function(prev, curr, index, arr) {
    var num = curr["customerID"];

    if (!prev[num]) {
        prev[num] = [];
    }

    for (var j = 0; j < dateArr.length; j++) {
        prev[num].push(curr[dateArr[j]]);
    }

    return prev;
}, {});
上,下,上,下,上,下

如何创建上面的CSV模式?
谢谢…

我想这会给你想要的结果:

var objRow=[{
日期:2011-09-20,
nums:[01100,0],
customerID:“C1101”,
安尼:1234
}, {
日期:2011-09-25,
nums:[0,0,0],
customerID:“C1101”,
安尼:1234
}, {
日期:2011-09-20,
nums:[0500,0],
customerID:“C1102”,
安尼:5678
}, {
日期:2011-09-22,
nums:[0,0,50],
customerID:“C1102”,
安尼:5678
}];
//创建CSV格式的字符串
var csvLine=“”;
var numsArray=新数组();
对于(var i=0;iTry

var objRow=[
{
"2011-09-20" : [0, 100, 0],
customerID:“C1101”,
安尼:1234
},
{
"2011-09-25" : [0, 0, 0],
customerID:“C1101”,
安尼:1234
},
{
"2011-09-20" : [0, 500, 0],
customerID:“C1102”,
安尼:5678
},
{
"2011-09-22" : [0, 0, 50],
customerID:“C1102”,
安尼:5678
}
];
var arr=[],
res=[],
csv=$.map(objRow,函数(v,k){
//项目
arr.push(v.ANI,v.customerID,v[Object.keys(v)[0]]);
//阵列
var a=$.grep(arr,函数(val,索引){
返回$.isArray(val)
});
//弦
var s=阵列滤波器(功能(i){
返回类型i==“字符串”
});
//分类项目
res.push([arr.filter(Number)[0]
,s[0]
连接(“,”)
,arr.filter(Number).slice(-1)[0]
,s.slice(-1)[0]
,a.加入(“,”);
返回res
}).slice(-1)[0];
//格式化文本,html
csv=(csv.slice(0,3)+“
”+csv.slice(-3)) .替换(/,/g,“,”); $(“正文”).append(csv)
var objRow=[
{
"2011-09-20" : [0, 100, 0],
customerID:“C1101”,
安尼:1234
},
{
"2011-09-25" : [0, 0, 0],
customerID:“C1101”,
安尼:1234
},
{
"2011-09-20" : [0, 500, 0],
customerID:“C1102”,
安尼:5678
},
{
"2011-09-22" : [0, 0, 50],
customerID:“C1102”,
安尼:5678
}
];
var arr=[],
res=[],
csv=$.map(对象行,函数(v,k){
arr.push(v.ANI,v.customerID,v[Object.keys(v)[0]]);
//阵列
var a=$.grep(arr,函数(val,索引){
返回$.isArray(val)
});
//弦
var s=阵列滤波器(功能(i){
返回类型i==“字符串”
});
res.push([arr.filter(Number)[0],s[0],a.splice(0,2).join(“,”),arr.filter(Number).slice(-1)[0],s.slice(-1)[0],a.join(“,”);
返回res
}).slice(-1)[0];
csv=(csv.slice(0,3)+“
”+csv.slice(-3)) .替换(/,/g,“,”); $(“正文”).append(csv)

我认为csv不支持阵列为什么
[01100,0]
在CSV中变成
0,0,100
?逻辑是什么?@bto.rdz是的,我知道,因此我想把上面的数组转换成逗号分隔的。@Ja͢检查所有的索引组合。index-0_object0,index-0_object1,index-1_object0,index-1_object1等等,谢谢你的回答。我已经更新了我的问题,关于
nums
规则@fanjavaid-我更新了我的答案,NUM现在像你的问题一样交织在一起
[0, 100, 0] // from first Object
[0, 0, 0] // from second Object


fistObject_firstIndex, secondObject_firstIndex, firstObject_secondIndex, secondObject_secondIndex, firstObject_thirdIndex, secondObject_thirdIndex
0, 0, 100, 0, 0, 0
var objRow = [
    {
        "2011-09-20" : [0, 100, 0],
        customerID : "C1101",
        ANI : 1234
    },
    {
        "2011-09-25" : [0, 0, 0],
        customerID : "C1101",
        ANI : 1234
    },
    {
        "2011-09-20" : [0, 500, 0],
        customerID : "C1102",
        ANI : 5678
    },
    {
        "2011-09-22" : [0, 0, 50],
        customerID : "C1102",
        ANI : 5678
    }
];

var arr = [],
    res = [],
    csv = $.map(objRow, function (v, k) {  
        // items         
        arr.push(v.ANI, v.customerID, v[Object.keys(v)[0]]);
        // arrays
        var a = $.grep(arr, function (val, index) {
            return $.isArray(val)
        });
        // strings
        var s = arr.filter(function (i) {
            return typeof i === "string"
        });
        // sort items
        res.push([arr.filter(Number)[0]
                 , s[0]
                 , a.splice(0, 2).join(",")
                 , arr.filter(Number).slice(-1)[0]
                 , s.slice(-1)[0]
                 , a.join(",")]);
        return res
    }).slice(-1)[0];
    // format text , html
    csv = (csv.slice(0, 3) + "<br>" + csv.slice(-3))
          .replace(/,/g, ", ");
    $("body").append(csv)