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}]
?只有一个寄存器
变量在每次迭代中都会发生变异并被推送三次。您知道您可以像[”这样构建数组吗