簡體   English   中英

將對象的屬性轉換為逗號分隔的列表?

[英]Turn properties of object into a comma-separated list?

我有一個這樣的對象:

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

我想:

John,Smith,253 689 4555

有什么簡單的方法嗎?

如果可能的話,您能否提供一個我也可以定義分隔符的示例?

您可以在現代瀏覽器中使用此單線

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

當您想從對象數組中提取一些屬性值作為逗號分隔的字符串時,此代碼將很有用。

    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”

這是一個更簡單的一個班輪。 它使用Object.values()方法而不是 Object.keys

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

寫一個這樣的函數:

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"

或者

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

嘗試這個:

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 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)

輸出:A、B、C

您可能想試試這個庫 - Underscore.js 它為您提供了非常有用的方法,並且可以跨瀏覽器工作。

在這里你可以這樣做 -

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

或者

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

Object.values()方法返回給定對象自己的可枚舉屬性值的數組。 它可用於將對象屬性轉換為數組,然后可以使用.join(separator)將其連接起來,以創建所需的字符串,並在連接函數中定義分隔符。 但這也會導致空值被加入。 所以對於一個對象

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

輸出為

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

將會

約翰·史密斯,

最后加上一個“,”。 為了避免這種情況,可以使用.filter()從數組中刪除空元素,然后在過濾后的數組上使用連接。

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

將輸出

約翰·史密斯

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

另一種方法是使用 lodash 函數 _.toString()

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

檢查下面的鏈接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}

使用這個 `` 標記和 $ 美元符號,您將得到結果。

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

Object.values(person).toString()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM