Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用java脚本映射函数获取结果时出现的问题_Javascript_Node.js - Fatal编程技术网

Javascript 使用java脚本映射函数获取结果时出现的问题

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的回调返回新数组

这里的问题是,如果我在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
的回调返回新数组的元素。看看医生

全球宣言:

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"
    }
  }
]