Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/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 永无止境的for-in-for循环_Javascript_For Loop_Reactjs - Fatal编程技术网

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不是一个规则,但肯定是全部,谢谢你指出。这也不是故意的,我真的不在乎第一个回答。我只是在后来添加了一些我起初认为不必要的信息,但这似乎很有帮助。我以后会尽量避免这种编辑!:-)