Javascript 使用java脚本映射函数获取结果时出现的问题
这里的问题是,如果我在map函数外声明mydata对象文字,我会得到两次处理结果,但是如果我在map函数内声明mydata对象文字,我会得到预期的输出,我不知道场景外发生了什么,请帮我解决我的问题Javascript 使用java脚本映射函数获取结果时出现的问题,javascript,node.js,Javascript,Node.js,这里的问题是,如果我在map函数外声明mydata对象文字,我会得到两次处理结果,但是如果我在map函数内声明mydata对象文字,我会得到预期的输出,我不知道场景外发生了什么,请帮我解决我的问题 hi i am getting result from the database as below format and i am using javascript map function to customise my returned json result Array#map的回调返回新数组
hi i am getting result from the database as below format and i am using javascript map function to customise my returned json result
Array#map
的回调返回新数组的元素。看看医生
全球宣言:
mydata
声明为gloabl,在map
的回调函数中,您向mydata
对象(mydata[item.date]=item
)添加值,然后返回对象引用。现在的问题是,您正在为新数组的每个项返回相同的对象引用。仔细看,最后一个数组(嵌套对象)中的每个项都是相同的。因此,您为每个迭代返回相同的元素,而不是不同的元素
本地声明
当您在回调函数中声明对象时,您正在为每个迭代创建一个不同的对象,新数组的每个元素都将有一个不同的对象
希望这会有帮助
what is the difference between two declaration could you please explain me why this happening
data = [
{ "name" : "xyz", "date" : "28-09-2018"},
{ "name" : "abc","date" : "29-09-2018"}
]
let mydata = {}
let result = data.map((item) => {
mydata[item.date] = item
return mydata
})
console.log(JSON.stringify(result,null,2))
declaring **mydata** outside map function i get this resutl:
[
{
"28-09-2018": {
"name": "xyz",
"date": "28-09-2018"
},
"29-09-2018": {
"name": "abc",
"date": "29-09-2018"
}
},
{
"28-09-2018": {
"name": "xyz",
"date": "28-09-2018"
},
"29-09-2018": {
"name": "abc",
"date": "29-09-2018"
}
}
]
declaring **mydata** within the map function i obtain below result
[
{
"28-09-2018": {
"name": "xyz",
"date": "28-09-2018"
}
},
{
"29-09-2018": {
"name": "abc",
"date": "29-09-2018"
}
}
]