最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

按日期对数组中的项目分组

IT培训 admin 16浏览 0评论

按日期对数组中的项目分组

i有一个包含日期和bin颜色的数组。在同一日期收集了一些垃圾箱,因此我想将这些日期分组,然后使用垃圾箱颜色数组。

我希望实现的数据结构是:

"items": [
        "item": {
            "date": "2019-10-18T00:00:00.000Z",
            "bins": [{
                "bin": "Blue"
            }, {
                "bin": "Grey"
            }]
        },
        ...
]

数据数组:

var dateList = [{
        "date": "2019-10-18T00:00:00.000Z",
        "bin": "Blue"
    }, {
        "date": "2019-11-08T00:00:00.000Z",
        "bin": "Blue"
    }, {
        "date": "2019-11-01T00:00:00.000Z",
        "bin": "Green"
    }, {
        "date": "2019-11-22T00:00:00.000Z",
        "bin": "Green"
    }, {
        "date": "2019-10-18T00:00:00.000Z",
        "bin": "Grey"
    }, {
        "date": "2019-11-01T00:00:00.000Z",
        "bin": "Grey"
    }]

这里是我到目前为止的代码,它已经存在了,但是没有创建items.item,而是创建了items [date],但是我不知道最后一部分:

    var items = {};
    for(var i = 0; i < dateList.length; i++) {

        if(!items[dateList[i].date]) {

            items[dateList[i].date] = {};
            items[dateList[i].date].date = dateList[i].date;
            items[dateList[i].date].bins = [];
            items[dateList[i].date].bins.push( { "bin": dateList[i].bin });

        } else {
            items[dateList[i].date].bins.push( { "bin": dateList[i].bin }); 
        }
    } 

这将产生项目[日期]

"items": {
    "2019-10-18T00:00:00.000Z": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-08T00:00:00.000Z": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "2019-11-01T00:00:00.000Z": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-22T00:00:00.000Z": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
}

如果我可以像items.item那样构造它,我会更喜欢它

"items": [
    "item": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "item": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "item": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "item": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
]

感谢

回答如下:

要获取对象数组,可以将其用作以下代码。请注意,不能保证使用Object.keys()时的顺序。

const items = {
    "2019-10-18T00:00:00.000Z": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-08T00:00:00.000Z": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "2019-11-01T00:00:00.000Z": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-22T00:00:00.000Z": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
}

const array = Object.keys(items).map(item => items[item]);
console.log(array)

按日期对数组中的项目分组

i有一个包含日期和bin颜色的数组。在同一日期收集了一些垃圾箱,因此我想将这些日期分组,然后使用垃圾箱颜色数组。

我希望实现的数据结构是:

"items": [
        "item": {
            "date": "2019-10-18T00:00:00.000Z",
            "bins": [{
                "bin": "Blue"
            }, {
                "bin": "Grey"
            }]
        },
        ...
]

数据数组:

var dateList = [{
        "date": "2019-10-18T00:00:00.000Z",
        "bin": "Blue"
    }, {
        "date": "2019-11-08T00:00:00.000Z",
        "bin": "Blue"
    }, {
        "date": "2019-11-01T00:00:00.000Z",
        "bin": "Green"
    }, {
        "date": "2019-11-22T00:00:00.000Z",
        "bin": "Green"
    }, {
        "date": "2019-10-18T00:00:00.000Z",
        "bin": "Grey"
    }, {
        "date": "2019-11-01T00:00:00.000Z",
        "bin": "Grey"
    }]

这里是我到目前为止的代码,它已经存在了,但是没有创建items.item,而是创建了items [date],但是我不知道最后一部分:

    var items = {};
    for(var i = 0; i < dateList.length; i++) {

        if(!items[dateList[i].date]) {

            items[dateList[i].date] = {};
            items[dateList[i].date].date = dateList[i].date;
            items[dateList[i].date].bins = [];
            items[dateList[i].date].bins.push( { "bin": dateList[i].bin });

        } else {
            items[dateList[i].date].bins.push( { "bin": dateList[i].bin }); 
        }
    } 

这将产生项目[日期]

"items": {
    "2019-10-18T00:00:00.000Z": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-08T00:00:00.000Z": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "2019-11-01T00:00:00.000Z": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-22T00:00:00.000Z": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
}

如果我可以像items.item那样构造它,我会更喜欢它

"items": [
    "item": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "item": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "item": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "item": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
]

感谢

回答如下:

要获取对象数组,可以将其用作以下代码。请注意,不能保证使用Object.keys()时的顺序。

const items = {
    "2019-10-18T00:00:00.000Z": {
        "date": "2019-10-18T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-08T00:00:00.000Z": {
        "date": "2019-11-08T00:00:00.000Z",
        "bins": [{
            "bin": "Blue"
        }]
    },
    "2019-11-01T00:00:00.000Z": {
        "date": "2019-11-01T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }, {
            "bin": "Grey"
        }]
    },
    "2019-11-22T00:00:00.000Z": {
        "date": "2019-11-22T00:00:00.000Z",
        "bins": [{
            "bin": "Green"
        }]
    }
}

const array = Object.keys(items).map(item => items[item]);
console.log(array)

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论