Javascript 将对象的属性转换为逗号分隔的列表?
我有一个这样的物体:Javascript 将对象的属性转换为逗号分隔的列表?,javascript,csv,Javascript,Csv,我有一个这样的物体: var person = { name: "John", surname: "Smith", phone: "253 689 4555" } function toCSV(obj, separator) { var arr = []; for (var key in obj) { if (obj.hasOwnProperty(key)) { arr.push(obj[key]); }
var person = {
name: "John",
surname: "Smith",
phone: "253 689 4555"
}
function toCSV(obj, separator) {
var arr = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(obj[key]);
}
}
return arr.join(separator || ",");
}
我想:
John,Smith,2536894555
有什么简单的方法吗
如果可能,请提供一个我也可以定义分隔符的示例。尝试以下方法:
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( ',' ) );
或在功能样式中:
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 person = {
name: "John",
surname: "Smith",
phone: "253 689 4555"
}
function toCSV(obj, separator) {
var arr = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
arr.push(obj[key]);
}
}
return arr.join(separator || ",");
}
然后你可以这样称呼它:
toCSV(person, "|"); // returns "John|Smith|253 689 4555"
或
您可以在现代浏览器中使用这一行程序
Object.keys(person).map(function(k){return person[k]}).join(",");
您可能想尝试此库-。它提供了非常有用的方法,可以跨浏览器工作 你可以这样做-
_.values(person).join(",")
或
这是一个简单的单行程序。它使用方法而不是Object.keys
Object.values(obj).join(",");
另一种方法是使用lodash函数u.toString() 检查下面的链接
当您希望从对象数组中提取一些属性值作为逗号分隔字符串时,此代码将非常有用
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(",");
输出-“A,B,C”该方法返回给定对象自身可枚举属性值的数组。它可用于将对象属性转换为数组,然后可以使用创建所需字符串,并在连接函数中定义分隔符。但这也会导致连接空值。所以对于一个对象来说
var person = {
name: "John",
surname: "Smith",
phone: ""
}
输出
Object.values(person).join(',')
将是
约翰,史密斯
最后加上一个“,”。为了避免这种情况,可以使用从数组中删除空元素,然后对过滤后的数组使用join
Object.values(person).filter(Boolean).join(',')
将输出
约翰,史密斯
输出:A、B、C是的,直到您为Object.keys和Array.map添加polyfill:/我可以确定列表顺序吗?太好了,谢谢!这只是一个提示,很好的答案解释了原因并提供了文档链接:)无论如何,++1这已经很旧了,但是仅仅做一下怎么样:Object.values(person.join(“,”)我们如何保持值的顺序?请注意,这是ECMAScript 2017,还没有得到很好的支持。作为参考,这本质上只是将它们与
join
连接起来。亲爱的Sachin,你能解释一下这行代码Array.prototype.map.call(arrayObjects,function(item){return item.property1;})。join(“,”;看看这个-@DEEPADHIYA@Sachin高尔,我想要的,谢谢你的支持。虽然这不是OP想要的,但这正是我想要的。谢谢大家!@欢迎光临✌️ ;)
Object.values(person).join(',')
Object.values(person).filter(Boolean).join(',')
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)