Javascript 在循环中映射数组

Javascript 在循环中映射数组,javascript,arrays,loops,for-loop,while-loop,Javascript,Arrays,Loops,For Loop,While Loop,我需要在循环中指定一个对象。 这是我的密码: let dataObj = {} let dataArr = [] , temp = [] while ( i < file.length ) { array[i].forEach(item => temp.push(item)) dataObj.name = temp[0] dataObj.nim = temp[1] dataArr.push(dataObj) temp = [] i++ }

我需要在循环中指定一个对象。 这是我的密码:


let dataObj = {}
let dataArr = []
 ,    temp = []

while ( i < file.length ) {
  array[i].forEach(item => temp.push(item))

  dataObj.name = temp[0]
  dataObj.nim = temp[1]

  dataArr.push(dataObj)

  temp = []
  i++
}

设dataObj={}
让dataArr=[]
,temp=[]
while(itemp.push(项))
dataObj.name=temp[0]
dataObj.nim=温度[1]
数据传送推送(dataObj)
温度=[]
我++
}
预期产出:

//dataar=[{name:panji,nim:123},{name:gifary,nim:234}]

现实:

//dataArr=[{name:gifary,nim:234},{name:gifary,nim:234}]

我不知道怎么才能把这件事做好。有人知道路吗


谢谢你的帮助

dataObj
是对同一对象的引用。无需使用变量即可执行此操作:

  dataArr.push({
     name: temp[0],
     nim : temp[1]
  })

dataObj
是对同一对象的引用。无需使用变量即可执行此操作:

  dataArr.push({
     name: temp[0],
     nim : temp[1]
  })

您正面临参考问题。当推送到数组时,引用设置的对象将导致相同的数据,因为它的相同对象具有不同的变量名

while ( i < file.length ) {
  array[i].forEach(item => temp.push(item))
  // use new object instead
  let dataObj = {name: temp[0], nim: temp[1]};

  dataArr.push(dataObj)

  temp = []
  i++
}

您正面临参考问题。当推送到数组时,引用设置的对象将导致相同的数据,因为它的相同对象具有不同的变量名

while ( i < file.length ) {
  array[i].forEach(item => temp.push(item))
  // use new object instead
  let dataObj = {name: temp[0], nim: temp[1]};

  dataArr.push(dataObj)

  temp = []
  i++
}

您没有映射数组。你只是误用了
.map
而不是像
.forEach
这样更合适的东西。它给出了与
相同的结果。forEach
你能显示你迭代的初始数组吗?好的,你的输入是什么?除非我们知道您操作的数据,否则输出错误是没有意义的。这可能是因为您正在反向执行此操作,您可能需要向后迭代或
unshift
而不是
push
您没有映射数组。你只是误用了
.map
而不是像
.forEach
这样更合适的东西。它给出了与
相同的结果。forEach
你能显示你迭代的初始数组吗?好的,你的输入是什么?除非我们知道您操作的数据,否则输出错误是没有意义的。这可能是因为您正以相反的方式执行此操作,您可能需要向后迭代或
unshift
而不是
push
如果愿意提供帮助,最可能的原因是问题中缺少信息,例如输入是什么。因此,在问题更完整之前,任何答案都将被视为猜测。很高兴提供帮助,最可能的原因是问题中缺少信息,例如输入内容。因此,在问题更加完整之前,任何答案都将被视为猜测。