¿Una forma sencilla de convertir una matriz de JavaScript en una lista separada por comas?

Resuelto Herb Caudill asked hace 15 años • 22 respuestas

Tengo una matriz unidimensional de cadenas en JavaScript que me gustaría convertir en una lista separada por comas. ¿Existe una forma sencilla en JavaScript (o jQuery) común y corriente de convertir eso en una lista separada por comas? (Sé cómo iterar a través de la matriz y construir la cadena yo mismo mediante concatenación si esa es la única manera).

Herb Caudill avatar Oct 14 '08 22:10 Herb Caudill
Aceptado

El método Array.prototype.join() :

var arr = ["Zero", "One", "Two"];

document.write(arr.join(", "));
Expandir fragmento

Wayne avatar Oct 14 '2008 15:10 Wayne

En realidad, la toString()implementación realiza una unión con comas de forma predeterminada:

var arr = [ 42, 55 ];
var str1 = arr.toString(); // Gives you "42,55"
var str2 = String(arr); // Ditto

No sé si esto lo exige la especificación JS, pero esto es lo quemayoríaCasi todos los navegadores parecen estar haciéndolo.

Ates Goral avatar Oct 14 '2008 18:10 Ates Goral

Matriz sencilla

let simpleArray = [1,2,3,4]
let commaSeperated = simpleArray.join(",");
console.log(commaSeperated);
Expandir fragmento

Matriz de objetos con atributos particulares separados por comas.

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);
Expandir fragmento

Resultado

Name 1, Name 2, Name 3
jfk avatar Dec 26 '2020 21:12 jfk

O (más eficientemente):

var arr = nueva matriz (3);
arr[0] = "Cero";
arr[1] = "Uno";
arr[2] = "Dos";

documento.write(arr); // igual que document.write(arr.toString()) en este contexto

El método toString de una matriz, cuando se llama, devuelve exactamente lo que necesita: una lista separada por comas.

Sergey Ilinsky avatar Oct 14 '2008 17:10 Sergey Ilinsky

Si necesita utilizar " y " en lugar de ", " entre los dos últimos elementos, puede hacer esto:

function arrayToList(array){
  return array
    .join(", ")
    .replace(/, ((?:.(?!, ))+)$/, ' and $1');
}
Andrew Downes avatar Mar 25 '2017 10:03 Andrew Downes