Javascript 动态json数组使密钥与一个数组相同

Javascript 动态json数组使密钥与一个数组相同,javascript,json,node.js,Javascript,Json,Node.js,我有一个json数组,如下所示,此数据来自excel工作表,并将其转换为json格式 [{ 'booktitle': 'Leading', 'bookid': '56353', 'bookauthor': 'Sir Alex Ferguson' }, { 'booktitle': 'How Google Works', 'bookid': '73638', 'bookauthor': 'Eric Smith' }, { 'booktitle': 'The Mercha

我有一个
json
数组,如下所示,此数据来自excel工作表,并将其转换为
json
格式

[{
  'booktitle': 'Leading',
  'bookid': '56353',
  'bookauthor': 'Sir Alex Ferguson'
}, {
  'booktitle': 'How Google Works',
  'bookid': '73638',
  'bookauthor': 'Eric Smith'
}, {
  'booktitle': 'The Merchant of Venice',
  'bookid': '37364',
  'bookauthor': 'William Shakespeare'
}]

我希望在一个数组中使用相同的键获取值。这个键值对将是动态的,所以通常需要一个解决方案。

我认为您需要的是这个。如果你还想补充什么,请告诉我。 检查代码片段

const obj=[{
'书名':'领先',
'bookid':'56353',
“作者”:“弗格森爵士”
}, {
“书名”:“谷歌的工作原理”,
'bookid':'73638',
“图书作者”:“埃里克·史密斯”
}, {
‘书名’:‘威尼斯商人’,
'bookid':'37364',
“作者”:“威廉·莎士比亚”
}];
常数res=obj.reduce((a,b)=>{
为了(让我进入b){
如果(!a[i]){
a[i]=[];
}
推(b[i]);
}
返回a;
}, {});

控制台日志(res)您可以使用如下数组映射对象键执行此操作

让arr=[{
“书名”:“领先”,
“bookid”:“56353”,
“作者”:“亚历克斯·弗格森爵士”
}, {
“书名”:“谷歌如何运作”,
“bookid”:“73638”,
“图书作者”:“埃里克·史密斯”
}, {
“书名”:“威尼斯商人”,
“bookid”:“37364”,
“作者”:“威廉·莎士比亚”
}];
设ans=Object.keys(arr[0]).map((key)=>{
设o={};
o[key]=arr.map((x)=>x[key]);
返回o;
});

控制台日志(ans)这里的关键是什么?你能更清楚地解释一下你试过什么吗?发布您的尝试。如何按键对对象数组进行分组:此示例类似,但我的键值对将是动态的,在本例中,booktitle、bookid、bookauthor是键,但在其他情况下,它们将不同,计数也将不同,因此,如果我们不知道json数组中的键,如何获取值此代码有帮助。只需要添加let data=JSON.parse(arr)作为我的JSON数组所需的格式。非常感谢。
let bookInfo = [{
  'booktitle': 'Leading',
  'bookid': '56353',
  'bookauthor': 'Sir Alex Ferguson'
}, {
  'booktitle': 'How Google Works',
  'bookid': '73638',
  'bookauthor': 'Eric Smith'
}, {
 'booktitle': 'The Merchant of Venice',
 'bookid': '37364',
 'bookauthor': 'William Shakespeare'
}]

  var bookTitle = [];
  var bookId   = [];
  var bookAuthor = [];

 bookInfo.filter(function(data){
      if(data.booktitle){
          bookTitle.push(data.booktitle);
       }

       if(data.bookid){
          bookId.push(data.bookid);
       }


       if(data.bookauthor){
          bookAuthor.push(data.bookauthor);
       }

 })