Javascript 在数组中合并JSON对象的部分

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

javascript(在nodejs上运行)中是否有一种简单的方法可以将对象的各种属性合并到一个数组中?我知道我可以使用一些for循环等来完成,但我想知道是否有更简单的方法。我的对象数组是这样的-

 [
  {
    "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从数据库中获取这些数据的,但是我想我没有正确地进行分组。让我试试这个,看看我能做到什么。为什么要投反对票?这是一个合法的问题,有适当的解释和所有。。。想解释一下吗?