Javascript 永无止境的for-in-for循环
我试图将文本转换为二进制,但当我的循环运行时,它永远不会结束。我不明白为什么会这样 有更好的方法吗Javascript 永无止境的for-in-for循环,javascript,for-loop,reactjs,Javascript,For Loop,Reactjs,我试图将文本转换为二进制,但当我的循环运行时,它永远不会结束。我不明白为什么会这样 有更好的方法吗 handleBinaryChange: function(e){ var friendsCopy = this.state.friendsArray; for (var i = 0; i < friendsCopy.length; i++) { for (var j = 0; j < friendsCopy[i].friendsName.length;
handleBinaryChange: function(e){
var friendsCopy = this.state.friendsArray;
for (var i = 0; i < friendsCopy.length; i++) {
for (var j = 0; j < friendsCopy[i].friendsName.length; j++) {
console.log(friendsCopy[i].friendsName += friendsCopy[i].friendsName[j].charCodeAt(0).toString(2) + " ");
}//End of 'j' for
}//End of 'i' for
this.setState({
friendsArray: friendsCopy //make friendsCopy contain the new value for friendsName
});
}
}
handleBinaryChange:功能(e){
var friendsCopy=this.state.friendsArray;
对于(var i=0;i
您在中断状态下使用了friendsName
的长度,但您在循环中不断增加字符串的长度:
for(var j=0; j<friendsCopy[i].friendsName.length; j++){
console.log(friendsCopy[i].friendsName += friendsCopy[i].friendsName[j].charCodeAt(0).toString(2) + " ");
}
for(var j=0;j通过在friendsCopy[i]中使用+=
。friendsName+=
您正在修改friendsCopy[i]。friendsName
。每次迭代都会变长,因此它永远不会停止
如果您只想将其输出到控制台,请将其更改为
friendsCopy[i].friendsName + friendsCopy[i].friendsName[j].charCodeAt(0).toString(2) + " ");
您正在使用+=
在每个循环迭代中
简单解决方案:使用存储起始值的辅助测试参数:
这样,测试值在整个循环中都是固定的
e、 g:
用于(var i=0;iyou正在增加console.log语句中的friendsName,否?此外,它不是friendsArray的副本,它是对原始数组的另一个引用。这是不是没有将新值添加到前一个数组中?我如何只是重复他的代码?我指出了他的错误所在以及他所做的错误。我坚信,他我自己可以解决这个问题,因为这应该是学习过程的一部分。@Icepickle有反对这种方法的规则吗?请指出。@Icepickle明白了。@warkentien2不是一个规则,但肯定是全部,谢谢你指出。这也不是故意的,我真的不在乎第一个回答。我只是在后来添加了一些我起初认为不必要的信息,但这似乎很有帮助。我以后会尽量避免这种编辑!:-)