Могу ли я получить доступ к отдельным буквам в строке, в массиве, через индекс, используя несколько циклов for? - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в 1 месяц, пытающийся понять массивы, и как получить к ним доступ лучше, я хочу стать мастером цикла for с массивами, так как меня беспокоит, что IDK как фильтруют, отображают и уменьшаютделать то, что они делают.Я хотел бы знать, как изменить, скажем, 'M' в 'Milk' на 'S', используя цикл for и индексы.Почему переменная 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]])
        }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Прежде всего подумайте о том, как организовать структуру данных таким образом.

var fruits = [{'Top-Shelf': ['Milk', 'Grapes', 'Margarine'], 'Mid-Shelf': ['Beer', 'Eggs', 'Pizza','Сода'], 'Овощной ящик': ['Сельдерей', 'Брокколи', 'Морковь', 'Салат'], 'Ящик для мяса': ['Бекон', 'Турция', 'Ветчина', 'Курица'']}];

когда вы запускаете цикл for, например:

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

, вы получаете логическое представление вашего приложения в консоли.

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

Вторая часть вопроса, как получить подмассивы?Вот код для этого.

let fridge = [['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.

0 голосов
/ 11 декабря 2018

Во-первых, ваш код не работает, потому что k не будет определен, так как вы пытаетесь использовать его вне цикла, в котором он был объявлен.

Второй - для доступа к отдельным элементами скажем, изменив первую букву на 'S', строго используя для циклов, вы бы сделали что-то вроде этого:

  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]] не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...