деструктурировать и вернуть несколько значений - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в javascript и сейчас учусь деструктуризации. То, что я пытаюсь достичь (показать в консоли), это:

«Имя: Майк Смит, Отец: Гарри Смит»

«Имя : Том Джонс, Отец: Ричард Джонс "

Я получаю сообщение об ошибке, что n не определено , но все должно быть в порядке? вот мой код, что я делал:

const people = [
  {
    name: 'Mike Smith',
    family: {
      mother: 'Jane Smith',
      father: 'Harry Smith',
      sister: 'Samantha Smith'
    },
    age: 35
  },
  {
    name: 'Tom Jones',
    family: {
      mother: 'Norah Jones',
      father: 'Richard Jones',
      brother: 'Howard Jones'
    },
    age: 25
  }
];

const kalle= people.map(( {name: n, family: {father: f}})=> { 
return [n,f]
});
  
console.log('Name: ' + n + ', Father: ' + f);

// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom Jones, Father: Richard Jones"

Ответы [ 2 ]

1 голос
/ 13 июля 2020

n и f находятся вне функции, что означает, что вы не можете получить к ним доступ вместо l oop по массиву.

Объектам деструктуризации не нужен ключ, если значение не является объект тоже.

const people = [
  {
    name: 'Mike Smith',
    family: {
      mother: 'Jane Smith',
      father: 'Harry Smith',
      sister: 'Samantha Smith'
    },
    age: 35
  },
  {
    name: 'Tom Jones',
    family: {
      mother: 'Norah Jones',
      father: 'Richard Jones',
      brother: 'Howard Jones'
    },
    age: 25
  }
];

// Returns an array
const persons = people.map(({name, family: {father}})=> { 
  return [name, father];
});

// Log each person
persons.forEach(([name, father]) => {
  console.log(`Name: ${name}, Father: ${father}`);
});

// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom Jones, Father: Richard Jones"
0 голосов
/ 13 июля 2020

Простой join может соответствовать тому, что вы ожидаете

const people = [
  {
    name: "Mike Smith",
    family: {
      mother: "Jane Smith",
      father: "Harry Smith",
      sister: "Samantha Smith",
    },
    age: 35,
  },
  {
    name: "Tom Jones",
    family: {
      mother: "Norah Jones",
      father: "Richard Jones",
      brother: "Howard Jones",
    },
    age: 25,
  },
]

const kalle = people
  .map(({ name: n, family: { father: f } }) => {
    return "Name: " + n + ", Father: " + f
  })
  .join("\n")

console.log(kalle)
...