我可以使用多个 for 循环通过索引访问字符串、数组中的单个字母吗?

Can I access individual letters in a string, in an array, via index using multiple for loops?

我是 1 个月的新手,试图了解数组,以及如何更好地访问它们,我希望成为数组 for 循环的高手,因为 IDK 如何过滤、映射和reduce 正在做他们正在做的事情。我想知道如何使用 for 循环和索引将 'Milk' 中的 'M' 更改为 'S'。为什么这个日志中的 i 变量 'Top Shelf' + 子数组的内容,而不只是 Top Shelf, Mid-Shelf, Vegetable Drawer, Meat Drawer?为什么 console.log([i[k]]) 不只列出 Top Shelf 中子数组的内容?

 let fridge = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer', 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];

    for(let i = 0; i < fridge.length; i++) {
        for(let k = 0; k < fridge[i].length; k++) {

        }
      console.log(fridge[i[k]])
        }

首先,您的代码不起作用,因为 k 不会被定义,因为您正试图在它声明的循环之外使用它。

其次 - 为了访问单个元素并将第一个字母更改为 'S',严格使用 for 循环,您需要执行如下操作:

  for(let i = 0; i < fridge.length; i++) {
    let shelf = fridge[i];
    for(let j = 0; j < shelf.length; j++) {
        let item = shelf[1][j];
        let itemSplit = item.split('')
        let newItem = 'S'+item.slice(1, itemSplit.length); 
        shelf[1][j] = newItem;
    }
  }
  console.log(fridge);

第三 - 如果您得到 Top Shelf, [contents] 的结果,那是因为您正在完全打印该数组。内容实际上并不属于 Top Shelf - 它们是同一数组中的不同元素,因此 [i[k]] 将不起作用。

首先考虑以这种方式安排您的数据结构。

var fruits = [{'Top-Shelf': ['Milk', 'Grapes', 'Margarine'], 'Mid-Shelf': ['Beer', 'Eggs', 'Pizza', 'Soda'], 'Vegetable-Drawer': ['Celery', 'Broccoli', 'Carrots', 'Lettuce'], 'Meat-Drawer': ['Bacon', 'Turkey', 'Ham', 'Chicken']}];

当你 运行 一个 for 循环时:

for(var i = 0; i < arr.length; i++)
{
console.log(fruits[i]); 
}

您可以在控制台中像这样获得您的应用程序的逻辑视图。

https://i.stack.imgur.com/1NbOn.png

第二部分问题,如何获取子数组? 这是它的代码。

让冰箱 = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer' , 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];

var result = fridge.map((arr)=>{

    var result = ""; 

   if(Array.isArray(arr) == true){

     arr.map((arr1)=>{

           result += arr1; 

     })
   }
   else {
    result =+ arr+","; 
   }

   return result; 

}); 

console.log(result);

在 jsfiddle 中尝试此代码。