为什么我必须创建一个单独的变量来纠正这个循环?(基本Javascript)

Why do I have to make a seperate variable to correct this loop? (Javascript Basics)

本文关键字:Javascript 基本 循环 变量 单独 创建 为什么 一个      更新时间:2023-09-26

我目前正在学习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"返回所有不同的变量…applestwinies, appleesppizza, pearstwinies, pearsppizza

它返回这个…苹果糖,苹果糖,梨披萨,梨,披萨

我发现的漏洞是

     >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);

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

这一行出现错误:

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

改为:

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

当你向数组中添加元素时,你可以通过多种方式来完成。

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对象的concat()方法将两个数组连接为一个。

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