Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象数组转换为数组数组_Javascript_Jquery_Arrays_Json_Client Side - Fatal编程技术网

Javascript 将对象数组转换为数组数组

Javascript 将对象数组转换为数组数组,javascript,jquery,arrays,json,client-side,Javascript,Jquery,Arrays,Json,Client Side,我希望有人能给我指出正确的方向。我有一个数组,其中包含许多属性为日期、集合和值的对象。 我需要在客户端将其转换为数组数组,其中每个成员数组保存如下数据:[日期,集合0的值,集合1的值] 我正在寻找一个解决方案,将与任何数量的“集”,这是使我复杂的一部分工作。任何建议的解决方案都可能需要jQuery或其他javascript库集来完成此任务。我没什么问题,让我们把它做完吧。:) 请参考以下初始和结束数据集: 第一个只有两套: var data = [ { Date: "2/10/201

我希望有人能给我指出正确的方向。我有一个数组,其中包含许多属性为日期、集合和值的对象。
我需要在客户端将其转换为数组数组,其中每个成员数组保存如下数据:[日期,集合0的值,集合1的值]
我正在寻找一个解决方案,将与任何数量的“集”,这是使我复杂的一部分工作。任何建议的解决方案都可能需要jQuery或其他javascript库集来完成此任务。我没什么问题,让我们把它做完吧。:)
请参考以下初始和结束数据集:

第一个只有两套:

var data = [  
    { Date: "2/10/2013", Set: 0, Value: 1 },   
    { Date: "2/10/2013", Set: 1, Value: 0 },   
    { Date: "2/11/2013", Set: 0, Value: 15 },   
    { Date: "2/11/2013", Set: 1, Value: 8 },   
    { Date: "2/12/2013", Set: 0, Value: 12 },    
    { Date: "2/12/2013", Set: 1, Value: 11 },    
    { Date: "2/13/2013", Set: 0, Value: 15 },   
    { Date: "2/13/2013", Set: 1, Value: 19 },   
    { Date: "2/14/2013", Set: 0, Value: 10 },    
    { Date: "2/14/2013", Set: 1, Value: 20 }   
];

var endData = [
    [ "2/10/2013", 1, 0 ],  
    [ "2/11/2013", 15, 8 ],  
    [ "2/12/2013", 12, 11 ],  
    [ "2/13/2013", 15, 19 ],  
    [ "2/14/2013", 10, 20 ]  
];
这是一个3套的例子。 例如,如果数据是这样的:

var data = [
    { Date: "2/10/2013", Set: 0, Value: 1 },   
    { Date: "2/10/2013", Set: 1, Value: 2 },  
    { Date: "2/10/2013", Set: 2, Value: 3 },   
    { Date: "2/11/2013", Set: 0, Value: 10 },  
    { Date: "2/11/2013", Set: 1, Value: 15 },   
    { Date: "2/11/2013", Set: 2, Value: 20 }  
];
var endData = [  
    [ "2/10/2013", 1, 2, 3 ],  
    [ "2/10/2013", 10, 15, 20 ]  
];
返回的数组需要如下所示:

var data = [
    { Date: "2/10/2013", Set: 0, Value: 1 },   
    { Date: "2/10/2013", Set: 1, Value: 2 },  
    { Date: "2/10/2013", Set: 2, Value: 3 },   
    { Date: "2/11/2013", Set: 0, Value: 10 },  
    { Date: "2/11/2013", Set: 1, Value: 15 },   
    { Date: "2/11/2013", Set: 2, Value: 20 }  
];
var endData = [  
    [ "2/10/2013", 1, 2, 3 ],  
    [ "2/10/2013", 10, 15, 20 ]  
];

任何指点都很感激

使用循环和全局
dat
变量跟踪您在列表中的位置:

;(function() {
    var data = [  
        { Date: "2/10/2013", Set: 0, Value: 1 },   
        { Date: "2/10/2013", Set: 1, Value: 0 },   
        { Date: "2/11/2013", Set: 0, Value: 15 },   
        { Date: "2/11/2013", Set: 1, Value: 8 },   
        { Date: "2/12/2013", Set: 0, Value: 12 },    
        { Date: "2/12/2013", Set: 1, Value: 11 },    
        { Date: "2/13/2013", Set: 0, Value: 15 },   
        { Date: "2/13/2013", Set: 1, Value: 19 },   
        { Date: "2/14/2013", Set: 0, Value: 10 },    
        { Date: "2/14/2013", Set: 1, Value: 20 }   
    ];

    var endData = {};

    for (var i = 0; i < data.length; ++i) {
        var date = data[i].Date;

        if (endData[date] === undefined)
            endData[date] = [];

        endData[date].push(data[i].Value);
    }

    var finalData = [];

    for (var ed in endData) {
        var a = [ed];

        for (var i = 0; i < endData[ed].length; ++i) {
            a.push(endData[ed][i]);
        }

        finalData.push(a);
    }

    console.log(finalData);
})();
var endData=[], dat='', row=[];
for (var i=0; i<data.length; i++) {
    var obj=data[i], val=obj.Value;
    if (dat!=obj.Date) {
        if (i) endData.push(row);
        dat = obj.Date;
        row = [dat, val];
    } else {
        row.push(val);
    }
}
endData.push(row); // last one
var endData=[],dat='',row=[];
对于(VarI=0;i
VarEndData=[];
var索引={};
对于(变量i=0,len=data.length;i< /代码>如果它是一个选项,考虑把它转换成一个对象,以日期串为关键字。<代码> {“2/10/2013”:[1,2,3],“2/11/2013”:[10,15,20] }//Cord>我认为原始格式更好。你的结束数组包含两种类型的数据,当它们应该时(出于语法原因)。只包含一种类型。没有理由不能像遍历数组一样轻松地遍历对象。也就是说:您尝试了什么?@Blazemonger,它确实需要采用那种格式。我不会无缘无故地问这个问题。如果您将数据看作数组,然后将其转换为DataTable。@crush,我的数据就是这样,无法更改服务器端的数据,但我同意,这将解决我的问题。:)尝试一下。给我一秒钟。编辑:这很有效!非常感谢。我希望它是反向的,这意味着如何在JavaScription中将数组数组转换为对象数组。这一个肯定更简洁,并且只在数据上循环一次,所以我认为性能更好。我已经检查了它是否输出了正确的结果。干得好。这是否要求它们在
数据
数组中按日期排序?@crush是的,就像OP提供的示例一样。我希望它反向表示如何将数组数组转换为Javascript中的对象数组。这一个也会产生正确的结果,但我不确定它是否也依赖于预排序的值。