Javascript 如何将这些json对象转换为适当的数组?

Javascript 如何将这些json对象转换为适当的数组?,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我在Mongodb集合中发现了一些类型错误的文档,它们如下所示: > db.stockData.find({productcode:"EMIM.AS"},{History:1} ) "History" : [ { "year" : 2018, "value" : 22.659 } ,"year" : 2017, "value" : 25.11 }, .... ] } 返回 { "_id" : ObjectId("5cb810770720c53598ea2807") , "H

我在Mongodb集合中发现了一些类型错误的文档,它们如下所示:

> db.stockData.find({productcode:"EMIM.AS"},{History:1} )
"History" : [ 
 { "year" : 2018, "value" : 22.659 }
  ,"year" : 2017, "value" : 25.11 },
 ....
 ] }
返回

{ "_id" : ObjectId("5cb810770720c53598ea2807")
, "History" : {
  "0" : { "year" : 2018, "value" : 22.659 },
  "1" : { "year" : 2017, "value" : 25.11 }, 
  "2" : { "year" : 2016, "value" : 20.82 }, 
  "3" : { "year" : 2015, "value" : 18.49 } } 
}
“History”元素应转换为数组,如下所示:

> db.stockData.find({productcode:"EMIM.AS"},{History:1} )
"History" : [ 
 { "year" : 2018, "value" : 22.659 }
  ,"year" : 2017, "value" : 25.11 },
 ....
 ] }
这在JavaScript中可行吗

补充:

我无法隔离历史对象或在其中循环。我用了这个密码

db.stockData.find({productcode:"EMIM.AS"},{History:1} , function( err,doc) { console.log(doc[0].History); });
{ "_id" : ObjectId("5cb810770720c53598ea2807"), "History" : { "0" : { "year" : 2018, "value" : 22.659 }, "1" : { "year" : 2017, "value" : 25.11 }, "2" : { "year" : "2016", "value" : 20.82 }, "3" : { "year" : 2015, "value" : 18.49 } } }
但总是得到整个对象,而不仅仅是历史。显然使用了错误的语法:

db.stockData.find( {}, {History:1}).forEach(function(doc) { 
printjson(doc.History);   } );

如果你也必须支持IE浏览器,你就必须使用这个功能

const arr={
“历史”:{
"0": {
“年份”:2018年,
“价值”:22.659
},
"1": {
“年份”:2017年,
“价值”:25.11
},
"2": {
“年份”:2016年,
“价值”:20.82
},
"3": {
“年份”:2015年,
“价值”:18.49
}
}
};
const res=Object.keys(arr.History).map(函数(键){
返回arr.History[key]});

控制台日志(res)要将带有数字键的对象转换为数组,可以使用:

const obj={“历史”:{“0”:{“年”:2018,“值”:22.659},“1”:{“年”:2017,“值”:25.11},“2”:{“年”:2016,“值”:20.82},“3”:{“年”:2015,“值”:18.49}
常量结果=对象值(对象历史)

console.log(result)
是的,它可以在JavaScript中使用Object.values()


它返回您的目标阵列。

当然可以。JavaScript是图灵完成的。你试过什么?你遇到了什么问题?包括您的代码。
Object.entries(data.History).map(a=>a[1])的可能重复项。
Object.values(data.History)
Object.assign([],data.History)
您能从根本上解决问题,并将文档直接保存为Mongo中的数组吗?