Как правильно обращаться к объектам в массиве, используя .forEach? - PullRequest
0 голосов
/ 07 мая 2018

Для теста мне дали массив с объектами внутри:

var donuts = [
{ type: "Jelly", cost: 1.22 },
{ type: "Chocolate", cost: 2.45 },
{ type: "Cider", cost: 1.59 },
{ type: "Boston Cream", cost: 5.99 }
];

и моя работа заключалась в том, чтобы перебирать объекты в массиве с помощью метода .forEach. Ну, я в основном взломал его и сделал переменную итерации, чтобы помочь мне использовать индекс для доступа к каждому объекту.

var i = 0;
donuts.forEach(function(donutSummary) {

var donut = donuts[i].type;
var cost = donuts[i].cost;

console.log(donut + " donuts cost $" + cost + " each");
i = i + 1;
});

в верхней части моего кода я объявил и назначил переменную i для моего индекса. Я знаю, что должен быть лучший способ доступа к объектам в этом массиве.

Может кто-нибудь сказать мне, как правильно сделать это без использования итерационной переменной?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вы были почти там. Используйте donutSummary вместо donuts[i]

donuts.forEach(function(donutSummary) {

     var donut = donutSummary.type;
     var cost = donutSummary.cost;

     console.log(donut + " donuts cost $" + cost + " each");
});

Для справки: Array.forEach

0 голосов
/ 07 мая 2018

Это синтаксис forEach

arr.forEach(function callback(currentValue[, index[, array]]) {
    //your iterator
}[, thisArg]);

где currentValue - текущий объект в массиве, index - это index объекта в массиве. В этом случае значение i будет обслуживаться индексом, поэтому нет необходимости увеличивать его.

Любой параметр, который находится внутри этого синтаксиса [, paramterName .. является необязательным параметром, например [, index является необязательным

var donuts = [{
    type: "Jelly",
    cost: 1.22
  },
  {
    type: "Chocolate",
    cost: 2.45
  },
  {
    type: "Cider",
    cost: 1.59
  },
  {
    type: "Boston Cream",
    cost: 5.99
  }
];


donuts.forEach(function(donutSummary, index) {
  console.log(donutSummary.type + " donuts cost $" + donutSummary.cost + " each");
});
0 голосов
/ 07 мая 2018

С функцией, предоставленной для forEach, ее первым аргументом является текущий элемент, который повторяется. Функция будет вызываться для каждого элемента в массиве, поэтому вам просто нужно получить доступ к свойствам каждого donut и console.log их. См. MDN документы на forEach .

const donuts = [
  { type: "Jelly", cost: 1.22 },
  { type: "Chocolate", cost: 2.45 },
  { type: "Cider", cost: 1.59 },
  { type: "Boston Cream", cost: 5.99 }
];

donuts.forEach(({ type, cost }) => console.log(`${type} donuts cost $${cost} each`));

Или, если вы не можете использовать деструктуризацию и синтаксис ES6:

var donuts = [
  { type: "Jelly", cost: 1.22 },
  { type: "Chocolate", cost: 2.45 },
  { type: "Cider", cost: 1.59 },
  { type: "Boston Cream", cost: 5.99 }
];

donuts.forEach(function(donut) {
  console.log(donut.type + ' donuts cost $' + donut.cost + ' each')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...