Javascript 在数组中合并JSON对象的部分
javascript(在nodejs上运行)中是否有一种简单的方法可以将对象的各种属性合并到一个数组中?我知道我可以使用一些for循环等来完成,但我想知道是否有更简单的方法。我的对象数组是这样的-Javascript 在数组中合并JSON对象的部分,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,javascript(在nodejs上运行)中是否有一种简单的方法可以将对象的各种属性合并到一个数组中?我知道我可以使用一些for循环等来完成,但我想知道是否有更简单的方法。我的对象数组是这样的- [ { "asin": "123456", "isbn": "09876543", "title": "Joe bloggs", "country": "us", "published_date": "2019-07-30", "AmazonPro
[
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-07-04"
},
"AmazonCategoryRank": {
"category_name": "Tom",
"category_rank": 78,
"date_of_extraction": "2020-07-04"
}
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-07-04"
},
"AmazonCategoryRank": {
"category_name": "Dick",
"category_rank": 103,
"date_of_extraction": "2020-07-04"
}
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-07-04"
},
"AmazonCategoryRank": {
"category_name": "Harry",
"category_rank": 267,
"date_of_extraction": "2020-07-04"
}
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-04-20"
},
"AmazonCategoryRank": {
"category_name": "Tom",
"category_rank": 42,
"date_of_extraction": "2020-04-20"
}
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-04-20"
},
"AmazonCategoryRank": {
"category_name": "Dick",
"category_rank": 60,
"date_of_extraction": "2020-04-20"
}
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-04-20"
},
"AmazonCategoryRank": {
"category_name": "Harry",
"category_rank": 132,
"date_of_extraction": "2020-04-20"
}
}
]
我希望根据提取日期将它们合并成这样
[
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-07-04"
},
"AmazonCategoryRank":[
{
"category_name": "Tom",
"category_rank": 78,
"date_of_extraction": "2020-07-04"
},
{
"category_name": "Dick",
"category_rank": 103,
"date_of_extraction": "2020-07-04"
},
{
"category_name": "Harry",
"category_rank": 267,
"date_of_extraction": "2020-07-04"
}
]
},
{
"asin": "123456",
"isbn": "09876543",
"title": "Joe bloggs",
"country": "us",
"published_date": "2019-07-30",
"AmazonProductPageInfo": {
"id": 1108,
"title_asin": "123456",
"country": "us",
"date_of_extraction": "2020-04-20"
},
"AmazonCategoryRank": [
{
"category_name": "Tom",
"category_rank": 42,
"date_of_extraction": "2020-04-20"
},
{
"category_name": "Dick",
"category_rank": 60,
"date_of_extraction": "2020-04-20"
},
{
"category_name": "Harry",
"category_rank": 132,
"date_of_extraction": "2020-04-20"
}
]
}
]
有一个很好的npm包,名为“查看它”可能会解决您的问题。您可以通过循环在代码中完成这项工作,也可以使用诸如“当然是在代码中”之类的函数 如果您正在寻找一种完全不同的方法,那么数据库也非常擅长对数据进行分组。我正在做一些类似的事情,我正在做一个临时收集,然后将大量原始数据流式传输到其中,然后使用mongo聚合管道来完成转换工作 在本例中,假设您将样本记录流式传输到集合中,您的查询可能如下所示:
db.test.aggregate([
{
$group: {
_id: "$AmazonProductPageInfo.date_of_extraction",
asin: { $first: "$asin" },
isbn: { $first: "$isbn" },
title: { $first: "$title" },
country: { $first: "$country" },
published_date: { $first: "$published_date" },
AmazonProductPageInfo: { $first: "$AmazonProductPageInfo" },
AmazonCategoryRank: { $push: "$AmazonCategoryRank" }, // $push here
}
}
])
其中,您使用$first
为组的每个字段拾取第一个标量值,假设它们都相同,并使用$push
对每个组都不同的类别秩对象进行排序。这会给你你想要的结果
然后,您可以使用光标对它们进行迭代,或者在同一管道中进行进一步的转换或聚合。谢谢Hadi,但这并不是我所需要的。我试过了,它似乎融合了一切,遗漏了很多我需要的东西。谢谢贾斯汀,我会尝试你的方法。基本上,我是使用Sequelize ORM从数据库中获取这些数据的,但是我想我没有正确地进行分组。让我试试这个,看看我能做到什么。为什么要投反对票?这是一个合法的问题,有适当的解释和所有。。。想解释一下吗?