嵌套for循环,不工作javaScript

时间:2016-04-06 19:12:52

标签: javascript arrays for-loop

继承我的代码:

function funky1() {
  var arr = [];
  var inp1 = $('#firstname').val();
  var inp2 = $('#secondname').val();
  var inp3 = $('#age').val();
  arr.push(inp1, inp2, inp3);
  var arr2 = [];
  var i;
  var n;

  for (i in arr) {
    for (n in i) {
      arr2.push(n)
    }
  }
  document.getElementById("sorted").innerHTML = arr2.sort();
}

out put是0,0,0

html是:

<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script language="JavaScript" src="marker.js" type="text/javascript"></script>
  </head>

  <body>
    <form>
      input1:
      <br>
      <input type="text" id="firstname">
      <br> input2:
      <br>
      <input type="text" id="secondname">
      <br> input3:
      <br>
      <input type="text" id="age">
    </form>
    <pre id="sorted">poop</pre>
    <button onclick="funky1();">click me</button>
  </body>

</html>

我期望输出是按字母顺序排列的字母:a,b,c ect ..

我是JavaScript的新手,所以对我来说很容易。

4 个答案:

答案 0 :(得分:2)

我认为您正在寻找的循环是:

for (var i = 0; i < arr.length; i ++) {
    for (var j = 0; j < arr[i].length; j++) {
        arr2.push(arr[i][j])
    }
}

这将获取第一个数组中的所有字符串,并将每个字母放入第二个数组中,这就是您要查找的内容。

你的循环不起作用,因为你使用for in表达式循环数组和字符串字母,这对于数组或字符串都不正确。

答案 1 :(得分:0)

我无法看到这样做的原因,但我认为编写此循环的最佳方法是这样的:

function funky1(){
    var arr = [],
        np1 = $('#firstname').val(),
        inp2 = $('#secondname').val(),
        inp3 = $('#age').val();
    arr.push(inp1,inp2,inp3);

    var arr2 = [];

    for(i in arr){
       arr2.push(arr[i])
    }
    document.getElementById("sorted").innerHTML = arr2.sort();
}

答案 2 :(得分:0)

您是否尝试使用第一个数组的内容创建第二个数组?如果是这样,您可能不需要嵌套for循环。这是一个可能有帮助的例子。第一个writeln显示项目正被添加到第二个数组。第二个writeln显示已完成的第二个数组,已排序。

var array1 = ["orange","apple","banana"];
var len = array1.length;
var array2 = [];
for(var x=0; x<len; x++) {
	array2.push(array1[x]);
	document.writeln(array2[x] + "<br>" );
};
document.writeln(array2.sort());

答案 3 :(得分:-1)

首先是第一件事。你应该真正使用for ... in,但我会先告诉你如何使用它:

 for (let i in arr) { // i here is the key
    let val = arr[i];
    arr2.push(val);
  }

然后,您应该在arr2变量中获取所有值。

如果您不想使用for ... in并且您使用的是es6,则可以使用for ... of

for (let val of arr) {
    arr2.push(val);
}

另一个选择是使用plain for循环:

for (let i; i < arr.length; ++i) {
    let val = arr[i];
    arr2.push(val);
}

或者,如果要将一个阵列关闭到另一个阵列,可以执行以下操作:

let arr2 = JSON.parse(JSON.stringify(arr));

最后

只要您现在使用上述选项之一正确构建arr2.sort()arr2就可以正常工作了。