Создайте новый массив из .filter()

У меня есть массив объектов,

[
   {name: 'Bob', age: 22, hidden: false },
   {name: 'Jessica', age: 60, hidden: false },
   {name: 'Marley', age: 34, hidden: true },
   {name: 'Michella', age: 12, hidden: false },
   {name: 'Sam', age: 10, hidden: true }
]

Что я хочу сделать, так это получить массив имен, но мне нужно это имя только в том случае, если hidden:false поэтому конечный результат будет выглядеть так, ['Bob', 'Jessica', 'Michella']

Если я сделаю,

const names = myArray.filter((array) => {
    if (array.hidden) {
        return array.name
    }
});

Затем я получаю объекты в массиве, которые не скрыты, но я не могу понять, как фильтровать объекты, чтобы просто получить массив имен? Я правильно использую фильтр?

"Я правильно использую фильтр?" нет, .filter() только фильтрует массив. Из массива с несколькими элементами вы получаете массив с потенциально меньшим количеством элементов. Вот и все. Это фильтрация. Он также не выполняет преобразование, так как это отдельная операция, которая не фильтрует.

VLAZ 03.11.2022 12:46
myArray.filter(array => array.hidden) чтобы получить только скрытые объекты. Затем используйте map(), чтобы получить только имена: myArray.filter(array => array.hidden).map(array => array.name)
0stone0 03.11.2022 12:47

Сначала выполните .filter(), а затем используйте .map(), чтобы преобразовать отфильтрованный массив объектов в массив строк (имен).

Pointy 03.11.2022 12:47

Просто используйте уменьшить, чтобы объединить оба действия [].reduce((previous, current) => {!current.hidden && previous.push(current.name); return previous}, []).

Lain 03.11.2022 12:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать array.filter с проверкой желаемого условия !hidden и array.map, чтобы получить имена пользователей.

const data = [
   {name: 'Bob', age: 22, hidden: false },
   {name: 'Jessica', age: 60, hidden: false },
   {name: 'Marley', age: 34, hidden: true },
   {name: 'Michella', age: 12, hidden: false },
   {name: 'Sam', age: 10, hidden: true }
];

const names = data.filter(({hidden}) => !hidden).map(({name}) => name)

console.info(names);

Другие вопросы по теме