【问题标题】:Why do I have to make a seperate variable to correct this loop? (Javascript Basics)为什么我必须创建一个单独的变量来纠正这个循环? (Javascript 基础)
【发布时间】:2015-05-22 03:31:42
【问题描述】:

我目前正在学习 Javascript,所以我会尽量用我选择的单词。

在下面的代码中。 我希望变量“allFoods”显示所有不同的变体。

虽然,我发现了一个漏洞,但我喜欢理解逻辑和为什么要做事情,而不是死记硬背代码。

>1 var fruits = ["apples", "pears"]; 
>2 var junk = ["twinkies", "pizza"];
>3 var allFoods = [];
for (var i = 0; i < fruits.length; i++) {
   for (var j = 0; j < junk.length; j++) {
      allFoods = fruits[i] + junk[i];
        alert(allFoods);

相反,返回所有不同变体的变量“allFoods”.. applestwinkies, applespizza, pearstwinkies, pearspizza

它返回这个... applestwinkies, applestwinkies, pearspizza, 梨, 比萨饼

我发现的漏洞是...

     >1 var fruits = ["apples", "pears"]; 
     >2 var junk = ["twinkies", "pizza"];
     >3 var allFoods = [];
     >4 var b = 0;
     >5 for (var i = 0; i < fruits.length; i++) {
     >6   for (var j = 0; j < junk.length; j++) {
     >7      allFoods[b] = fruits[i] + junk[i];
             b++;
     >8        alert(allFoods);

虽然它正在工作。我不知道发生了什么以及它为什么起作用!

【问题讨论】:

标签: javascript arrays loops counter


【解决方案1】:

你在这一行有一个错误:

  allFoods = fruits[i] + junk[i];

改成:

  allFoods = fruits[i] + junk[j];
                              ^ use index j here

【讨论】:

  • 哇...使用“J”索引,它应该使用“allFoods.push()”函数为我工作。这很好,因为现在我知道程序在做什么以及为什么......但是......为什么它仍然不能使用简单的 allFoods = fruits[i] + junk[j];
  • @Mike:这可能是因为您没有向allFoods 数组添加任何元素,而是将每个结果依次分配给同一个变量. @Thriggle 的回答解决了您问题的这一部分。
【解决方案2】:

当您向数组添加元素时,您可以采用多种方式。

var arr = [];
arr.push("One"); // Pushes a new element into the array
arr[1] = "Two"; // Sets a specific element in the array
// arr === ["One","Two"]

加号运算符+ 根据上下文提供不同的功能。当与字符串值一起使用时,它将字符串连接在一起。因此allFoods = fruits[1] + junk[1]; 等价于allFoods = "pearspizza";

您想要做的是逐个循环遍历数组并使用push 方法将元素附加到新数组中,如以下代码示例所示:

var fruits = ["apples", "pears"];
var junk = ["twinkies", "pizza"];
var allFoods = [];
for (var i = 0; i < fruits.length; i++) {
  allFoods.push(fruits[i]);
}
for (var j = 0; j < junk.length; j++) {
  allFoods.push(junk[j]);
}
alert(allFoods);

当然,您也可以使用Array object's concat() method 将两个数组合二为一。

var fruits = ["apples", "pears"];
var junk = ["twinkies", "pizza"];
var allFoods = fruits.concat(junk);
alert(allFoods);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多