js数据结构转换的问题


有这样一个数据结构


 var arr=[
    {
        day:0,
        time:1
    },
    {
        day:0,
        time:2
    },
    {
        day:0,
        time:3
    },
    {
        day:1,
        time:1
    },
    {
        day:1,
        time:2
    },
    {
        day:1,
        time:3
    }
]

如何转换成这样的结构


 {
    0:[1,2,3],
    1:[1,2,3]
}

JavaScript

495年的波紋 8 years, 10 months ago

可以解决,我先占坑,一会给你代码


 var arr=[
        {
            day:0,
            time:1
        },
        {
            day:0,
            time:2
        },
        {
            day:0,
            time:3
        },
        {
            day:1,
            time:1
        },
        {
            day:1,
            time:2
        },
        {
            day:1,
            time:3
        },
        {
            day:2,
            time:3
        },

    ];
    function myFormat(a) {
        var newObj = {};
        for (var i = 0, len = a.length; i < len; i++) {
            if (!newObj.hasOwnProperty(a[i].day)) {
                newObj[a[i].day] = [];
            }
            newObj[a[i].day].push(a[i].time);
        }
        return newObj;
    }
    console.log(myFormat(arr));

clipboard.png

byevv answered 8 years, 10 months ago


 var obj={};
 for(var i=0;i<arr.length,i++){
   obj.i=arr[i]
}

你要是想修改成你说的那种 key:value 然后value是数组的话 你要调整数据的结构,你现在这个例子没办法转换的。

decade answered 8 years, 10 months ago

你确定能var obj={{day:0,time:1}}?

akasier answered 8 years, 10 months ago

这不就是underscore.groupBy方法做的事儿嘛。。。

傲娇鼬荡漾 answered 8 years, 10 months ago

Your Answer