将对象的属性转换为以逗号分隔的列表?

are*_*eim 23 javascript csv

我有一个像这样的对象:

var person = {
  name: "John",
  surname: "Smith",
  phone: "253 689 4555"
}
Run Code Online (Sandbox Code Playgroud)

我想要:

John,Smith,253 689 4555
Run Code Online (Sandbox Code Playgroud)

有一些简单的方法吗?

如果可能,请您提供一个示例,我也可以定义分隔符?

Jos*_*chi 47

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

Object.keys(person).map(function(k){return person[k]}).join(",");
Run Code Online (Sandbox Code Playgroud)

  • 现在这已经很老了,但是该怎么做:Object.values(person).join(',') (4认同)
  • 很好,谢谢你!只是一个提示,很好的答案解释了为什么并提供文档链接:)无论如何,++ 1 (3认同)

小智 17

当您想从对象数组中提取一些属性值作为逗号分隔的字符串时,此代码将非常有用。

    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(",");
Run Code Online (Sandbox Code Playgroud)

输出- “A,B,C”

  • 我不熟悉 Javascript,但 `arrayObjects.map(x => x.property1).join(",")` 似乎返回相同的结果。 (3认同)

Jac*_*eld 11

这是一个更简单的单衬。它使用Object.values()方法而不是 Object.keys

Object.values(obj).join(",");
Run Code Online (Sandbox Code Playgroud)


Dev*_*ius 7

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)
Run Code Online (Sandbox Code Playgroud)

输出:A、B、C


The*_*Nik 5

试试这个:

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( ',' ) );
Run Code Online (Sandbox Code Playgroud)

或功能风格:

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 ) );
Run Code Online (Sandbox Code Playgroud)


Ken*_* Ki 5

写一个这样的函数:

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

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

    return arr.join(separator || ",");
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样称呼:

toCSV(person, "|"); // returns "John|Smith|253 689 4555"
Run Code Online (Sandbox Code Playgroud)

要么

toCSV(person); // returns "John,Smith,253 689 4555"
Run Code Online (Sandbox Code Playgroud)