СМ
Сергей Минин

Что я делаю не так???

Есть задача, она звучит так:
Напиши функцию pluck, которая берет массив объектов и возвращает массив значений определенного поля. Функция не должна изменять исходный массив:

var characters = [
{ 'name': 'barney', 'age': 36 },
{ 'name': 'fred', 'age': 40 }
];

console.log(pluck(characters, 'name')); // ['barney', 'fred']

Я решил её так: codepen.io/azure-line/pen/LYZQEew?editors=1111
И у меня вопрос. Я её решил правильно? Ибо в проверке у меня выдаёт ошибку.
Заранее спасибо.

Тимур-Carleone
Тимур-Carleone

А если поля name в объекте нет?

function pluck(arr, fieldName) {
return arr.filter(item => fieldName in item).map(item => item[fieldName])
}

Но это работает, если объект простой. Но если поле находится в объекте внутри объекта:
[{user: {name: "Вася"}}]
, то твоя функция не сработает.
Надо проверять тип значения поля и для массивов / объектов вызывать функцию рекурсивно.

ИД
Иван Думщиков

Правильно всё. Только slice() не нужен)
А какую ошибку выдает? Может оно требует какую-то дополнительную обработку, если поля 'name' не существует в объекте. Сейчас оно выводит undefined.

Похожие вопросы
Объявление метода класса через static vs через "точку".
Слетела кодировка в консоли в Chrome (JavaScript)
Написать код на JavaScript понятным и легким способом
Как зашифровать текст в javascript?
Сокращение выражений в java-script
Делаю игру на JavaScript но проблема с уровнями
JavaScript код который может решать примеры
Помогите решить [object Object] React.js
JavaScript что делает этот код? text = 'hello'; text = text.substring(1) + text[0];
Что не так делаю? Должно из импута элемент сверяться с элементом из массива а1