Javascript 如何将这些json对象转换为适当的数组?
我在Mongodb集合中发现了一些类型错误的文档,它们如下所示: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
> 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中的数组吗?