将来自两个JavaScript对象的数据合并到一个新对象中

时间:2016-05-20 14:33:45

标签: javascript json object

我在JavaScript中有一个对象,格式如下:

{
'date' : {"12.12.2014","12.12.2014","12.12.2014","13.12.2014","13.12.2014","14.12.2014"}
'product' :  {"apple","banana","apple","strawberry","apple","banana"}
}

此对象必须按以下格式拆分和计算:

var apple = {
'date': {"12.12.2014","13.12.2014","14.12.2014"}
'product': {2,1,0}
}

var banana = {
'date': {"12.12.2014","13.12.2014","14.12.2014"}
'product': {1,0,1}
}

var strawberry = {
'date' : {"12.12.2014","13.12.2014","14.12.2014"}
'product': {0,1,0}
}

也许你可以提供解决方案。

1 个答案:

答案 0 :(得分:0)

使用正确的数据结构和一些助手datedateObj,您首先得到所有日期,第二个对象作为日期的哈希表,第三个是分组结果。



var object = { 'date': ["12.12.2014", "12.12.2014", "12.12.2014", "13.12.2014", "13.12.2014", "14.12.2014"], 'product': ["apple", "banana", "apple", "strawberry", "apple", "banana"] },
    date = object.date.filter(function (d) {
        if (!this[d]) {
            this[d] = true;
            return true;
        }
    }, Object.create(null)),
    dateObj = {},
    grouped = {};

date.forEach(function (d, i) {
    dateObj[d] = i;
});

object.product.forEach(function (p, i) {
    grouped[p] = grouped[p] || {
        date: date,
        product: date.map(function (d) { return 0; })
    };
    grouped[p].product[dateObj[object.date[i]]]++;
});

console.log(grouped);