web-dev-qa-db-fra.com

Transformez les propriétés de l'objet en une liste séparée par des virgules?

J'ai un objet comme ça:

var person = {
  name: "John",
  surname: "Smith",
  phone: "253 689 4555"
}

Je voudrais:

John,Smith,253 689 4555

Y a-t-il un moyen facile? 

Si possible, pourriez-vous fournir un exemple où je peux également définir le séparateur?} _

16
areim

Vous pouvez utiliser ce one-liner dans les navigateurs modernes

Object.keys(person).map(function(k){return person[k]}).join(",");
34
Joschi

essaye ça:

var key,
  person = {
    name: "John",
    surname: "Smith",
    phone: "253 689 4555"
  },
  array = [];

for ( key in person ) {
  if ( person.hasOwnProperty( key ) ) {
    array.Push( person[ key ] );
  }
}

console.log( array.join( ',' ) );

ou en style de fonction:

var
  getValues = function ( obj ) {
    var key,
      array = [];

    for ( key in obj ) {
      if ( obj .hasOwnProperty( key ) ) {
        array.Push( obj [ key ] );
      }
    }

    return obj.join( ',' );
  };

var person = {
      name: "John",
      surname: "Smith",
      phone: "253 689 4555"
    };

console.log( getValues( person ) );
5
TheGr8_Nik

Écrivez une fonction comme celle-ci:

function toCSV(obj, separator) {
    var arr = [];

    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            arr.Push(obj[key]);
        }
    }

    return arr.join(separator || ",");
}

Et ensuite, vous pouvez l'appeler comme ceci:

toCSV(person, "|"); // returns "John|Smith|253 689 4555"

ou

toCSV(person); // returns "John,Smith,253 689 4555"
5
Kenny Ki

Ce code sera utile lorsque vous souhaitez extraire certaines valeurs de propriété d'un tableau d'objets sous forme de chaîne séparée par des virgules.

    var arrayObjects = [
  {
    property1: "A",
    property2: "1"
  },
  {
    property1: "B",
    property2: "2"
  },
  {
    property1: "C",
    property2: "3"
  }
];

Array.prototype.map.call(arrayObjects, function(item) { return item.property1; }).join(",");

Sortie - "A, B, C"

3
Sachin Gaur

Vous voudrez peut-être essayer cette bibliothèque - Underscore.js . Il vous donne des méthodes vraiment utiles et fonctionne sur tous les navigateurs.

Ici tu peux le faire comme ça -

_.values(person).join(",")

ou

_.values(person).join("|")
2
vatsal

Voici un one liner plus simple. Il utilise la méthode Object.values ​​() à la place de Object.keys

Object.values(obj).join(",");
1
Jack Fairfield
Object.values(person).join('/')
0
J.Du

Une autre méthode consiste à utiliser la fonction lodash _.toString ()

console.log( _.toString( Object.values( person ) ) );
==> John,Smith,253 689 4555

Vérifiez le lien ci-dessous https://lodash.com/docs/4.17.5#toString

0
Velen Aranha