Javascript 将对象的属性转换为逗号分隔的列表?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/26732123/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Turn properties of object into a comma-separated list?
提问by areim
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?
如果可能,您能否提供一个示例,我也可以在其中定义分隔符?
回答by Joschi
You can use this one-liner in modern browsers
您可以在现代浏览器中使用此单行
Object.keys(person).map(function(k){return person[k]}).join(",");
回答by Hyman Fairfield
Here is a simpler one liner. It uses the Object.values()method instead of Object.keys
这是一个更简单的单衬。它使用Object.values()方法而不是 Object.keys
Object.values(obj).join(",");
回答by Sachin Gaur
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"
输出- “A,B,C”
回答by TheGr8_Nik
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 ) );
回答by Kenny Ki
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"
回答by vatsal
You might want to try this library - Underscore.js. It gives you really helpful methods and works across browsers.
你可能想试试这个库 - Underscore.js。它为您提供了非常有用的方法并且可以跨浏览器工作。
Here you can do it like this -
在这里你可以这样做 -
_.values(person).join(",")
or
或者
_.values(person).join("|")
回答by J.Du
Object.values(person).join('/')
回答by Velen Aranha
Another way is to use lodash function _.toString()
另一种方法是使用 lodash 函数 _.toString()
console.log( _.toString( Object.values( person ) ) );
==> John,Smith,253 689 4555
Check the link below https://lodash.com/docs/4.17.5#toString

