Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2018, 19:08
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Выборка из массива объектов при помощи filter.
Добрый день!

Замылился глаз и не вижу где ошибка... Нужно из массива объектов вытащить список объектов которые перебирает метод filter учитывая условие callback функции.

Помогите пожалуйста. Код привожу.

const users = [
  {
    id: "701b29c3-b35d-4cf1-a5f6-8b12b29a5081",
    name: "Moore Hensley",
    email: "moorehensley@indexia.com",
    eyeColor: "blue",
    phone: "+1 (848) 556-2344",
    friends: ["Sharron Pace"],
    isActive: false,
    balance: 2811,
    skills: ["ipsum", "lorem"],
    gender: "male",
    age: 37
  },
  {
    id: "7a3cbd18-57a1-4534-8e12-1caad921bda1",
    name: "Sharlene Bush",
    email: "sharlenebush@tubesys.com",
    eyeColor: "blue",
    phone: "+1 (855) 582-2464",
    friends: ["Briana Decker", "Sharron Pace"],
    isActive: true,
    balance: 3821,
    skills: ["tempor", "mollit", "commodo", "veniam", "laborum"],
    gender: "female",
    age: 34
  },
  {
    id: "88beb2f3-e4c2-49f3-a0a0-ecf957a95af3",
    name: "Ross Vazquez",
    email: "rossvazquez@xinware.com",
    eyeColor: "green",
    phone: "+1 (814) 593-3825",
    friends: ["Marilyn Mcintosh", "Padilla Garrison", "Naomi Buckner"],
    isActive: false,
    balance: 3793,
    skills: ["nulla", "anim", "proident", "ipsum", "elit"],
    gender: "male",
    age: 24
  },
  {
    id: "249b6175-5c30-44c6-b154-f120923736f5",
    name: "Elma Head",
    email: "elmahead@omatom.com",
    eyeColor: "green",
    phone: "+1 (909) 547-2687",
    friends: ["Goldie Gentry", "Aisha Tran"],
    isActive: true,
    balance: 2278,
    skills: ["adipisicing", "irure", "velit"],
    gender: "female",
    age: 21
  },
  {
    id: "334f8cb3-eb04-45e6-abf4-4935dd439b70",
    name: "Carey Barr",
    email: "careybarr@nurali.com",
    eyeColor: "blue",
    phone: "+1 (956) 512-2693",
    friends: ["Jordan Sampson", "Eddie Strong"],
    isActive: true,
    balance: 3951,
    skills: ["ex", "culpa", "nostrud"],
    gender: "male",
    age: 27
  },
  {
    guid: "150b00fb-dd82-427d-9faf-2879ea87c695",
    name: "Blackburn Dotson",
    email: "blackburndotson@furnigeer.com",
    eyeColor: "brown",
    phone: "+1 (876) 411-2433",
    friends: ["Jacklyn Lucas", "Linda Chapman"],
    isActive: false,
    balance: 1498,
    skills: ["non", "amet", "ipsum"],
    gender: "male",
    age: 38
  },
  {
    id: "e1bf46ab-7168-491e-925e-f01e21394812",
    name: "Sheree Anthony",
    email: "shereeanthony@kog.com",
    eyeColor: "brown",
    phone: "+1 (979) 504-2554",
    friends: ["Goldie Gentry", "Briana Decker"],
    isActive: true,
    balance: 2764,
    skills: ["lorem", "veniam", "culpa"],
    gender: "female",
    age: 39
  }
];



//Получить массив объектов пользователей по цвету глаз (поле eyeColor)

const getUsersByEyeColor = (arr, color) =>


  arr.filter(user => user.eyeColor.color);

console.log(getUsersByEyeColor(users, "blue"));
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2018, 19:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

AndriiS,
user => user.eyeColor == color
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2018, 19:46
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

рони,
Большое спасибо! Очень помогли :-)

Хотел еще спросить, можно ли при помощи console.log выводить результат работы скрипта в консоль был через запятую. Имена объектов из полей name подставляются в вывод. Хотел просто сделать более читабельно.

[объект Moore Hensley, объект Ross Vazquez, объект Blackburn Dotson]

Подскажите пожалуйста хотя-бы где про это почитать, я допилю самостоятельно.
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2018, 20:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

AndriiS,

const getUsersByEyeColor = (arr, color) =>
arr.filter(user => user.eyeColor == color);
let arrFilter = getUsersByEyeColor(users, "blue")
console.log(arrFilter.map(el => el.name));
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2018, 22:58
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Сообщение от рони Посмотреть сообщение
AndriiS,

const getUsersByEyeColor = (arr, color) =>
arr.filter(user => user.eyeColor == color);
let arrFilter = getUsersByEyeColor(users, "blue")
console.log(arrFilter.map(el => el.name));
Рони, спасибо! Это я как раз делаю, но нюанс в том, что перед каждым именем, которое тянется из объекта нужно вставить слово "объект". Я пытался так, но не катит... Логично ставит строку над всем массивом.
console.log("объект", arrFilter.map(el => el.name));

Реально ли получить в консоли вот это?

[объект Moore Hensley, объект Sharlene Bush, объект Carey Barr]
Ответить с цитированием
  #6 (permalink)  
Старый 22.09.2018, 23:10
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Подскажите пожалуйста, если нужно выбрать массив пользователей из массива объектов users у которых есть друг (ключ friends) с указанным именем. Т.е. нужно вывести console.log(getUsersByFriend(users, "Briana Decker"));

Каким функциональным методом массивов (map, find, filter...) это лучше делать?

Спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 22.09.2018, 23:14
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от AndriiS
[объект Moore Hensley, объект Sharlene Bush, объект Carey Barr]
console.log(arrFilter.map(el => 'Объект '+el.name));

Сообщение от AndriiS
Каким функциональным методом массивов (map, find, filter...) это лучше делать?
filter
Ответить с цитированием
  #8 (permalink)  
Старый 22.09.2018, 23:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

фильтрация обьекта
Сообщение от AndriiS
у которых есть друг (ключ friends) с указанным именем.
const getUsersByKeyValue = (arr, key, value) =>
arr.filter(user => (user = user[key], Array.isArray(user) ?  user.includes(value) : user == value));
let arrFilter = getUsersByKeyValue(users, "friends", "Briana Decker");
console.log(arrFilter.map(el => 'Объект '+el.name));
arrFilter = getUsersByKeyValue(users, "eyeColor", "blue");
console.log(arrFilter.map(el => 'Объект '+el.name));

Последний раз редактировалось рони, 22.09.2018 в 23:47.
Ответить с цитированием
  #9 (permalink)  
Старый 04.01.2021, 21:15
Аватар для sovsem-nub
Профессор
Отправить личное сообщение для sovsem-nub Посмотреть профиль Найти все сообщения от sovsem-nub
 
Регистрация: 15.10.2014
Сообщений: 255

Сообщение от рони Посмотреть сообщение
const getUsersByKeyValue = (arr, key, value) =>
arr.filter(user => (user = user[key], Array.isArray(user) ?  user.includes(value) : user == value));
let arrFilter = getUsersByKeyValue(users, "friends", "Briana Decker");
console.log(arrFilter.map(el => 'Объект '+el.name));
arrFilter = getUsersByKeyValue(users, "eyeColor", "blue");
console.log(arrFilter.map(el => 'Объект '+el.name));
Рони, а как получить всех женщин с голубыми или зелеными глазами?
Ответить с цитированием
  #10 (permalink)  
Старый 04.01.2021, 22:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

sovsem-nub,
Сообщение от sovsem-nub
Рони, а как получить всех женщин с голубыми или зелеными глазами?
[...getUsersByKeyValue(users, "eyeColor", "blue"), ...getUsersByKeyValue(users, "eyeColor", "green")]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление нескольких объектов из массива konstantin-921 Events/DOM/Window 4 10.03.2018 18:16
Как закрыть блок toogle при пропадании фокуса или при помощи esc? giwuf Библиотеки/Тулкиты/Фреймворки 0 18.01.2018 16:09
Как изменить контекст при помощи call? Alex7851 Events/DOM/Window 2 07.01.2018 21:19
Масштабирование при помощи javascript mooni Элементы интерфейса 2 17.06.2013 17:51
Обратная связь ПРИ ПОМОЩИ JavaScript qwertypop Элементы интерфейса 2 23.04.2009 18:30