Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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-从列表返回值_Javascript_Arrays_Object - Fatal编程技术网

Javascript-从列表返回值

Javascript-从列表返回值,javascript,arrays,object,Javascript,Arrays,Object,我试图从添加了一些对象的列表中返回一些值。在循环内部,我得到了正确的输出,但在循环外部,它并没有正常工作。我可能在一些基本的方面失败了,但我真的找不到到底发生了什么。以下是我所拥有的: var register = { name: "", number: "" }; var listName = new Array(); var listNumber = new Array(); var listObject = new Array(); listName.push("A"

我试图从添加了一些对象的列表中返回一些值。在循环内部,我得到了正确的输出,但在循环外部,它并没有正常工作。我可能在一些基本的方面失败了,但我真的找不到到底发生了什么。以下是我所拥有的:

  var register = { name: "", number: "" };
  var listName = new Array();
  var listNumber = new Array();
  var listObject = new Array();

  listName.push("A");
  listName.push("B");
  listName.push("C");
  listNumber.push(1);
  listNumber.push(2);
  listNumber.push(3);

  for(var i = 0; i < listName.length; i++)
  {
     register.name = listName[i];
     register.number = listNumber[i];
     listObject.push(register);
     console.log(listObject[i].name) //"A" then "B" then "C"
     console.log(listObject[i].number) //"1" then "2" then "3"
  }

  console.log(listObject[0].name); //"C"
  console.log(listObject[1].name); //"C"
  console.log(listObject[2].name); //"C"
  console.log(listObject[0].number); //"3"
  console.log(listObject[1].number); //"3"
  console.log(listObject[2].number); //"3"
var寄存器={name:,number:};
var listName=新数组();
var listNumber=新数组();
var listObject=新数组();
listName.push(“A”);
listName.push(“B”);
listName.push(“C”);
listNumber.push(1);
listNumber.push(2);
listNumber.push(3);
对于(var i=0;i

提前感谢您的进一步帮助

@某些性能是正确的。您对JavaScript中的对象引用缺乏理解导致了此错误

寄存器
被声明为循环外的变量,因此其作用域在循环外。这意味着每次循环代码运行时,都会重置register对象的属性,然后将同一对象推入数组。因此,在您的示例中,
listObject
数组由3个对
register
对象的相同引用组成

将循环更改为:

for(let i = 0; i < listName.length; i++) {
  let register = {name: listName[i], number: listNumber[i]};

  listObject.push(register);
}
for(设i=0;i
@某些性能是正确的。您对JavaScript中的对象引用缺乏理解导致了此错误

寄存器
被声明为循环外的变量,因此其作用域在循环外。这意味着每次循环代码运行时,都会重置register对象的属性,然后将同一对象推入数组。因此,在您的示例中,
listObject
数组由3个对
register
对象的相同引用组成

将循环更改为:

for(let i = 0; i < listName.length; i++) {
  let register = {name: listName[i], number: listNumber[i]};

  listObject.push(register);
}
for(设i=0;i
如前所述,您只有一个
寄存器
变量,每次迭代都会覆盖该变量

您可以直接将对象推入listObject,而无需声明外部范围变量

  var listName = new Array();
  var listNumber = new Array();
  var listObject = new Array();

  listName.push("A");
  listName.push("B");
  listName.push("C");
  listNumber.push(1);
  listNumber.push(2);
  listNumber.push(3);

  for(var i = 0; i < listName.length; i++)
  {
     listObject.push({ name: listName[i], number: listNumber[i] });
     console.log(listObject[i].name) //"A" then "B" then "C"
     console.log(listObject[i].number) //"1" then "2" then "3"
  }

  console.log(listObject[0].name); //"now A"
  console.log(listObject[1].name); //"now B"
  console.log(listObject[2].name); //"now C"
  console.log(listObject[0].number); //"now 1"
  console.log(listObject[1].number); //"now 2"
  console.log(listObject[2].number); //"now 3"
var listName=new Array();
var listNumber=新数组();
var listObject=新数组();
listName.push(“A”);
listName.push(“B”);
listName.push(“C”);
listNumber.push(1);
listNumber.push(2);
listNumber.push(3);
对于(var i=0;i
如前所述,您只有一个
寄存器
变量,每次迭代都会覆盖该变量

您可以直接将对象推入listObject,而无需声明外部范围变量

  var listName = new Array();
  var listNumber = new Array();
  var listObject = new Array();

  listName.push("A");
  listName.push("B");
  listName.push("C");
  listNumber.push(1);
  listNumber.push(2);
  listNumber.push(3);

  for(var i = 0; i < listName.length; i++)
  {
     listObject.push({ name: listName[i], number: listNumber[i] });
     console.log(listObject[i].name) //"A" then "B" then "C"
     console.log(listObject[i].number) //"1" then "2" then "3"
  }

  console.log(listObject[0].name); //"now A"
  console.log(listObject[1].name); //"now B"
  console.log(listObject[2].name); //"now C"
  console.log(listObject[0].number); //"now 1"
  console.log(listObject[1].number); //"now 2"
  console.log(listObject[2].number); //"now 3"
var listName=new Array();
var listNumber=新数组();
var listObject=新数组();
listName.push(“A”);
listName.push(“B”);
listName.push(“C”);
listNumber.push(1);
listNumber.push(2);
listNumber.push(3);
对于(var i=0;i
函数迭代时会添加一个新的寄存器对象。每次迭代都会更新寄存器对象的键和值

相反,在每次迭代中创建一个register对象并推送它

像这样:

for(var i = 0; i < listName.length; i++)
  {
     let registerObject = {name: listName[i], number: listNumber[i]};
     listObject.push(registerObject);
     console.log(listObject[i].name) //"A" then "B" then "C"
     console.log(listObject[i].number) //"1" then "2" then "3"
  }
for(变量i=0;i
函数迭代时会添加一个新的寄存器对象。每次迭代都会更新寄存器对象的键和值

相反,在每次迭代中创建一个register对象并推送它

像这样:

for(var i = 0; i < listName.length; i++)
  {
     let registerObject = {name: listName[i], number: listNumber[i]};
     listObject.push(registerObject);
     console.log(listObject[i].name) //"A" then "B" then "C"
     console.log(listObject[i].number) //"1" then "2" then "3"
  }
for(变量i=0;i
只有一个
寄存器
变量在每次迭代中都会发生变异并被推送三次。您知道您可以构建像
[“A”、“B”、“C”]
[1,2,3]
这样的数组,甚至
[{name:“A”,number:1},{name:“B”,number:2},{name:“C”,number:3}]
?只有一个
寄存器
变量在每次迭代中都会发生变异并被推送三次。您知道您可以像
[”这样构建数组吗