Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив объектов (https://javascript.ru/forum/misc/69737-massiv-obektov.html)

Tanya51 15.07.2017 19:45

Массив объектов
 
задачка:
Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов), каждый объект имеет поля firstname, lastname, age с разными значениями. Используя встроенные функции массивов:
-Отфильтруйте пользователей младше 18 лет
-Добавьте каждому объекту поле fullName, которое является конкатенацией имени и фамилии
-Сформируйте новый массив, который содержит только полное имя пользователей.

Массив обьектов создала,а дальше не получается((
Как работают forEach, filter, map на простых задачах понятно,а как их применить к более сложной не понятно(

рони 15.07.2017 20:18

Цитата:

Сообщение от Tanya51
а дальше не получается

где код?

Tanya51 15.07.2017 21:28

Цитата:

Сообщение от Rise (Сообщение 458588)
Tanya51,
Могу подсказать где какой метод использовать:
-Отфильтруйте... filter
-Добавьте... forEach
-Сформируйте... map

это я поняла)

Tanya51 15.07.2017 21:28

Цитата:

Сообщение от рони (Сообщение 458586)
где код?

уже немного разобралась)
Напишу,если возникнут вопросы. Спасибо)

Tanya51 15.07.2017 22:08

var users=[
  {
    firstname: 'Tanya',
    lastname: 'Sashyna',
    age: 25,
  },
   {
    firstname: 'Lena',
    lastname: 'Velichko',
    age: 27,
  },
  {
    firstname: 'Nastya',
    lastname: 'Sash',
    age: 5,
  }
}
users.forEach(function(item, i, users) {
  return users.push(Array['fullName']=Array.firstname+Array.lastname);
});


Мне нужно добавить в обьекты,которые находятся в массиве users свойство fullName со значением (конкатенацией) firstname+lastname.

В коде выше он мне добавляет NaN в массив.
Подскажите как правильно сделать

рони 15.07.2017 22:14

Tanya51,
var users=[
  {
    firstname: 'Tanya',
    lastname: 'Sashyna',
    age: 25
  },
   {
    firstname: 'Lena',
    lastname: 'Velichko',
    age: 27
  },
  {
    firstname: 'Nastya',
    lastname: 'Sash',
    age: 5
  }
]
users.forEach(function(item, i, users) {
  item.fullName = item.firstname+" "+item.lastname;
});

console.log(users)

Tanya51 15.07.2017 22:18

спасибо)

ruslan_mart 16.07.2017 11:13

function getter() {
    return this.firstname + ' ' + this.lastname;
}

users.forEach(function(user) {
    Object.defineProperty(user, 'fullname', {
        get: getter
    });
});

Tanya51 16.07.2017 14:41

спасибо за разъяснение. Теперь понятно стало)


Часовой пояс GMT +3, время: 21:49.