Отображение массива в строку с разрывом строки - React

У меня есть функция, которая мне нужна, чтобы вернуть строку с разрывами строки или div, которые будут правильно отображаться

export const showPeople = (peopleArray = []) => {
  let peopleString = peopleArray ? peopleArray.map((people) => {
    <div>
      `${people.name && people.name},
      ${people.last_name && people.last_name}`
    </div>
  }).join('') : ''
  return peopleString
}

Я пробовал с div, без div, с возвратом без возврата и без соединения, и я получаю [Object] для каждого человека, в данном конкретном случае пустую строку

Я видел похожие вопросы, но не смог решить свою проблему

Нравится? codeandbox.io/s/y2v5nr933z

Chris G 04.09.2018 23:17
Поведение ключевого слова "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
1
3 448
5

Ответы 5

export const showPeople = (peopleArray = []) => {
  let peopleString = peopleArray ? peopleArray.map(people => 
  `<div>
      ${people.name}, ${people.last_name}
    </div>`
  ).join('') : ''
  return peopleString
}

var peoples = [{name: 'Jhon', last_name: 'Doe'},{name: 'Mario', last_name: 'Peach'}]

var peopleString = peoples.map(people => 
  `<div>
    ${people.name}, ${people.last_name}
  </div>`
).join('')

console.info(peopleString)

document.getElementById('container').innerHTML = peopleString
<div id = "container"></div>

Привет @Luis Это не работает, я получаю странные символы вместо <div>, это стрелки внутрь и наружу, что-то похожее на этот <- div ->, но с более длинными строками

user3808307 04.09.2018 22:35

Этот ответ игнорирует тот факт, что OP использует React.

Chris G 05.09.2018 00:13

Вы не хотите возвращать строку, вы хотите вернуть массив элементов:

let peopleString = peopleArray.map((people) => (
  <div>
   {people.name || ""},
   {people.last_name || ""}
  </div>
));
return peopleString

Поскольку вы не выполняете конкатенацию строк с переменными. Вам нужно удалить Строки шаблона внутри ваших div.

${people.name && people.name} - это конкатенация строк с переменными.
Barmar 04.09.2018 23:36

Я также ставлю запятую между именем и фамилией

user3808307 05.09.2018 00:44

Если цель состоит в том, чтобы сократить список элементов до одной строки, которая отображается как многострочная строка, для этого можно использовать правило CSS white-space:pre-wrap;:

body {
  white-space: pre-wrap;
}

Как только вы это сделаете, вы сможете визуализировать многострочную строку с разрывами строк на символах \n, как показано ниже:

export const showPeople = (peopleArray = []) => {

  let peopleString = peopleArray ? peopleArray.map((people) => (
      `${people.name ? people.name : ''} ${people.last_name ? people.last_name : ''}`
  })
  .join('\n') : ''

  return peopleString
}

Я выложил сюда рабочую версию для вас также

Надеюсь это поможет!

Я хочу разрыв строки между разными людьми, а не между именем и фамилией

user3808307 04.09.2018 22:53

@ user3808307 а, я так понимаю, только что обновленный ответ - это вам поможет?

Dacre Denny 04.09.2018 22:58

@ user3808307 хорошо, я только что выложил обновление - это работает для вас?

Dacre Denny 05.09.2018 01:02

Нет, я пробовала, спасибо. Я решил это, сделав карту в рендере сейчас, ни одно из решений не работает

user3808307 05.09.2018 06:50

Мне кажется, что вы не возвращать ничего в этой функции карты:

(people) => { ...string here... }

Я бы предложил просто:

(people) => ( ...string here... )

или:

(people) => { return ...string here... }


Другая проблема может заключаться в том, что то, что вы, кажется, собираетесь вернуть в функции карты, НЕ является строкой, и, вероятно, (?) Должно быть; трудно сказать, не видя функцию в контексте.

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