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);
}
})