【问题标题】:Can I access individual letters in a string, in an array, via index using multiple for loops?我可以使用多个 for 循环通过索引访问字符串、数组中的单个字母吗?
【发布时间】:2019-05-12 20:19:35
【问题描述】:

我是 1 个月的新手,试图了解数组以及如何更好地访问它们,我希望成为使用数组的 for 循环的大师,因为 IDK 如何过滤、映射和缩减让我很困扰做他们正在做的事情。我想知道如何使用 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]])
        }

【问题讨论】:

  • 你应该考虑使用一个对象来代替
  • 数组是一个对象。见 typeof []
  • @Mickers 是的,我知道 - 我的意思是这样:让冰箱对象 = {} - 也许你还没有看到它
  • 我理解你这么说的原因,但我练习的重点不是为了提高效率或其他任何东西,我想知道如何操纵数组的每个方面。

标签: javascript arrays for-loop indices


【解决方案1】:

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

var fruits = [{'Top-Shelf': ['Milk', 'Grapes', 'Margarine'], 'Mid-Shelf': ['Beer', 'Eggs', 'Pizza', 'Soda' ],'蔬菜抽屉':['芹菜','西兰花','胡萝卜','生菜'],'肉类抽屉':['培根','火鸡','火腿','鸡肉']} ];

当你运行一个 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 ']], ['蔬菜抽屉', ['芹菜', '西兰花', '胡萝卜', '生菜']], ['肉类抽屉', ['培根', '火鸡', '火腿', '鸡肉']]];

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 中试试这个代码。

【讨论】:

  • 我 100% 理解为什么我应该为此使用对象,但关键是要让使用嵌套数组控制/操作数组变得舒适,这样我就不会对我正在做的事情感到不安当一个挑战要求我使用嵌套的 for 循环来操作嵌套数组时。这对学习其内部运作毫无意义吗?我知道在现实世界中,对于这个特定的应用程序,id 使用一个对象,但是在理解如何做到这一点方面仍然没有用处?
【解决方案2】:

首先,您的代码不起作用,因为当您尝试在声明它的循环之外使用它时,不会定义 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]] 将不起作用。

【讨论】:

  • 所以.....嵌套数组,并不是真正的嵌套,它们只是原始数组中的一个列表,采用数组的格式?我想如果我说冰箱 =[['shelf', ['item']]],该项目将嵌套 3 个数组深,我可以通过将索引和 for 循环链接在一起来单独访问它们?
猜你喜欢
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 2016-10-17
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多