5

Простой способ преобразовать массив JavaScript в строку с разделителями?

9

У меня есть одномерный массив строк в JavaScript, и я хочу преобразовать его в строку, разделенную запятыми. Есть ли простой способ сделать это с использованием обычного JavaScript (или jQuery)? Я знаю, как итерироваться по массиву и создавать строку самостояно с помощью конкатенации, если это единственный способ.

5 ответ(ов)

1

На самом деле, реализация метода toString() по умолчанию выполняет объединение элементов массива через запятую:

var arr = [42, 55];
var str1 = arr.toString(); // Вернет "42,55"
var str2 = String(arr); // То же самое

Не знаю, закреплено ли это в спецификации JS, но, судя по всему, именно так поступают большинство практически все браузеры.

0

Вопрос: Как я могу получить строку, содержащую все имена из массива объектов, разделённые запятыми?

Ответ: Вы можете использовать метод map для извлечения атрибута name из каждого объекта в массиве, а затем применить метод join, чтобы объединить их в строку, разделённую запятыми. Вот пример кода:

let arrayOfObjects = [
  {
    id: 1,
    name: "Name 1",
    address: "Address 1"
  },
  {
    id: 2,
    name: "Name 2",
    address: "Address 2"
  },
  {
    id: 3,
    name: "Name 3",
    address: "Address 3"
  }
];

let names = arrayOfObjects.map(x => x.name).join(", ");
console.log(names);

Результатом выполнения этого кода будет строка:

Name 1, Name 2, Name 3

Таким образом, вы получите все имена из массива объектов в формате, который вам нужен.

0

Чтобы получить строку с элементами массива, разделённую запятыми, вы можете использовать метод toString() массива. Этот метод возвращает строку, состоящую из элементов массива, разделённых запятыми, что является именно тем, что вам нужно.

Вот пример кода:

var arr = new Array(3);
arr[0] = "Zero";
arr[1] = "One";
arr[2] = "Two";

document.write(arr); // так же, как и document.write(arr.toString()) в этом контексте

В этом примере document.write(arr) и document.write(arr.toString()) будут вести себя одинаково, выводя "Zero,One,Two". Это удобный и эффективный способ отобразить элементы массива в нужном формате.

0

Если вам нужно использовать "и" вместо запятой между последними двумя элементами массива, вы можете сделать это следующим образом:

function arrayToList(array) {
  return array
    .join(", ")
    .replace(/, ((?:.(?!, ))+)$/, ' и $1');
}

В этом коде мы сначала объединяем элементы массива, используя join(", "), а затем заменяем последнюю запятую на "и" с помощью метода replace() и регулярного выражения. Эта конструкция ищет последнюю запятую в строке и заменяет её на "и", сохраняя при этом последний элемент.

0

Чтобы безопасно обработать строки, содержащие разделители (например, запятые), в JavaScript вы можете использовать JSON для экранирования строк. В вашем примере вы правильно используете метод JSON.stringify(), который обертывает каждую строку в кавычки и экранирует специальные символы.

Вот пример кода, который вы привели:

let arr = ["Hello, there", "How's there", 'the "best"'];
let csv = arr.map(e => JSON.stringify(e)).join(",");
console.log(csv);

Результат выполнения кода будет следующим:

"Hello, there","How's there","the \"best\""

При необходимости вы можете добавить дополнительные проверки для обработки других специальных символов или настроить выходной формат. Однако использование JSON.stringify() обеспечивает надежное экранирование для большинства случаев, связанных с созданием CSV. Это гарантирует, что строки, содержащие запятые или кавычки, будут корректно обработаны.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь