Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Деструктурирующее присваивание (https://javascript.ru/forum/events/78149-destrukturiruyushhee-prisvaivanie.html)

Трудяга 02.08.2019 09:09

Деструктурирующее присваивание
 
Только начинаю осваивать JS, помогите разобраться(

Организовать функцию getInfo, которая принимает объект вида
{ name: ..., info: { employees: [...], partners: [ … ] } }
и выводит в консоль имя (если имени нет, показывать ‘Unknown’) и первые две компании из массива partners:

[script]
const organisation = {
name: 'Google',
info: { employees: [‘Vlad’, ‘Olga’], partners: ['Microsoft', 'Facebook', 'Xing'] }
};
getInfo(organisation); →
Name: Google
Partners: Microsoft Facebook
[/script]

laimas 02.08.2019 10:11

function getInfo(o) {
    console.log('Name: %s\nPartners: %s', o.name||'Unknown', o.info.partners.slice(0, 2).join(' '))
}


[Vlad, Olga - нельзя!

SuperZen 02.08.2019 10:19

<script>

  const organisationGoogle = {
    name: 'Google',
    info: {
      employees: ['Vlad', 'Olga'],
      partners: ['Microsoft', 'Facebook', 'Xing']
    }
  };
  const organisationCompany = {
    info: {
      employees: ['Olga', 'Vlad'],
      partners: ['Xing']
    }
  };

  const getInfo = organisation => {
    const { name, info: { partners } } = organisation
    return { name: name || `UNKNOWN`, partners: partners.slice(0, 2) }
  }

  const getOrganisationInfo = ({ name, info: { partners } }) => ({ name: name || `UNKNOWN`, partners: partners.slice(0, 2) })

  console.log(getOrganisationInfo(organisationGoogle))
  console.log(getOrganisationInfo(organisationCompany))

</script>

рони 02.08.2019 11:01

:write:
const organisationGoogle = {
    name: 'Google',
    info: {
      employees: ['Vlad', 'Olga'],
      partners: ['Microsoft', 'Facebook', 'Xing']
    }
  };
  const organisationCompany = {
    info: {
      employees: ['Olga', 'Vlad'],
      partners: ['Xing']
    }
  };

  const getInfo = ({ name = 'UNKNOWN', info: { partners : [a,b]} }) => ({name, partners : [a,b]})

  console.log(getInfo(organisationGoogle))
  console.log(getInfo(organisationCompany))

Трудяга 02.08.2019 11:04

:blink: Спасибо)

Трудяга 02.08.2019 11:35

Похожая задачка, но непонятно как сделать для этого всего функцию, был бы просто массив или объект другое дело(

Используя rest оператор и деструктуризацию, создать функцию, которая принимает любое количество аргументов и возвращает объект, содержащий первый аргумент и массив из остатка:

func('a', 'b', 'c', 'd') →
{
first: 'a',
other: ['b', 'c', 'd']
}

рони 02.08.2019 11:40

Трудяга,
const  func = (first, ...other)  => ({first, other});
  console.log(func('a', 'b', 'c', 'd'))

Трудяга 02.08.2019 11:52

спасибо;)


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