Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象的属性转换为逗号分隔的列表?_Javascript_Csv - Fatal编程技术网

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)