简体   繁体   中英

Turn properties of object into a comma-separated list?

I have an object like this:

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

I want:

John,Smith,253 689 4555

Is there some easy way?

If possible, could you please provide an example where I can also define the separator?

您可以在现代浏览器中使用此单线

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

This code will be useful when you want to extract some property values from an array of objects as comma separated string.

    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(",");

Output - "A,B,C"

Here is a simpler one liner. It uses the Object.values() method instead of Object.keys

Object.values(obj).join(",");

Write a function like this:

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

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

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

And then you can call it like:

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

or

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

try this:

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( ',' ) );

or in function style:

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 ) );
var arr = [
    {
        key_1: "A",
        key_2: "1"
    },
    {
        key_1: "B",
        key_2: "2"
    },
    {
        key_1: "C",
        key_2: "3"
    }
];

var CSVOf_arr = arr.map((item) => { return item.key_1 }).join(',')

console.log('Comma seprated values of arr', CSVOf_arr)

OUTPUT: A,B,C

You might want to try this library - Underscore.js . It gives you really helpful methods and works across browsers.

Here you can do it like this -

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

or

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

The Object.values() method returns an array of a given object's own enumerable property values. It can be used to convert object properties to an array which can then be joined using .join(separator) to create the required string with separator defined in join function. But this will cause empty values to be joined as well. So for an object as

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

output for

Object.values(person).join(',')

will be

John,Smith,

with an additional "," at the end. To avoid this .filter() can be used to remove empty elements from array and then use join on filtered array.

Object.values(person).filter(Boolean).join(',')

will output

John,Smith

Object.values(person).join('/')

Another way is to use lodash function _.toString()

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

Check the link below https://lodash.com/docs/4.17.5#toString

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



let personData = ${person.name},${person.surname},${person.phone}

With this `` mark and $ dollar sign you will get the result.

只需使用 object.values() 并使用 toString() 方法

Object.values(person).toString()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM