Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 - Fatal编程技术网

在JavaScript中迭代对象属性时遇到问题

在JavaScript中迭代对象属性时遇到问题,javascript,Javascript,rowDiv是一个具有属性“phrases”的对象(我在其构造函数中将其定义为this.phrases=[]并随后向其添加了元素)。allRows是包含所有rowDiv对象的对象(通过allRows[rowDiv.toString()]=rowDiv插入的对象)。为什么“row”只给我toString而不是实际对象?或者可能发生了其他事情。您只是打印出要查找的对象的密钥 在您正在使用的词典中,您使用toString()的结果作为键 要获取实际对象,而不仅仅是toString()结果,您需要使用a

rowDiv是一个具有属性“phrases”的对象(我在其构造函数中将其定义为this.phrases=[]并随后向其添加了元素)。allRows是包含所有rowDiv对象的对象(通过allRows[rowDiv.toString()]=rowDiv插入的对象)。为什么“row”只给我toString而不是实际对象?或者可能发生了其他事情。

您只是打印出要查找的对象的密钥

在您正在使用的词典中,您使用
toString()
的结果作为键

要获取实际对象,而不仅仅是
toString()
结果,您需要使用
allRows[row]
而不仅仅是
row

例如,通过此更改,您的代码将如下所示:

allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row in allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(row)
   //prints toString
}
javascript中这种类型的“for-each”循环的工作方式有点不同。你必须这样做:

allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row in allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(allRows[row]); // CHANGE MADE HERE
   //prints toString
}

也可以使用for…of


点击计票下方的复选标记,您可以随意接受我的答案或其他答案。
for(row in allRows) {
   console.log('for commence ' + allRows[row].phrases);
   //null
   console.log(allRows[row])
   //no longer should print toString
}
allRows[rowDiv.toString()] = rowDiv;
console.log('commence row' + allRows[rowDiv.toString()].phrases);
//not null
for(row of allRows) {
   console.log('for commence ' + row.phrases);
   //null
   console.log(row)
   //prints toString
}