簡體   English   中英

將對象轉換為數組的最佳方法

[英]Best way to convert object into array

我有一個以下語法的對象文字:

const loader = {
    "0": "b",
    "1": "a",
    "2": "r",
    // arbitrary extra fields:
    "foo": 123,
    "quux": 456,
}

我想將它轉換為數組["b", "a", "r"]然后轉換為字符串"bar" ,這是我的最終目標。 我不需要任何額外的字段,如果有的話,可以安全地丟棄它們。

很有可能使用Array.from(loader) ,但不幸的是Array.from期望length屬性存在,我沒有。

鑒於在我的情況下不保證對象文字鍵順序,這是我迄今為止提出的最簡潔的解決方案:

function convert(obj) {
    const a = [];
    for (const k in obj) {
        a[k] = obj[k];
    }
    return a.join('');
}

雖然我不喜歡它,但它對我來說似乎是多余的和不優雅的。 有什么我可能錯過的嗎? 我可以自由使用ES6中的任何東西。

您可以轉換對象的數組並將連接的值作為字符串。

 var loader = { 0: "b", 1: "a", 2: "r", foo: 123, quux: 456 }, string = Object.assign([], loader).join(''); console.log(string); 

使用Object.keysfiltermapjoin

var output = Object.keys( loader ) //get the keys
              .filter( s => !isNaN( s ) ) //remove non-numeric keys
              .map( s => loader[s] ) //get values for filtered keys
              .join( "" ); //join them

如果需要明確地對鍵進行排序,那么

var output = Object.keys( loader ) //get the keys
              .filter( s => !isNaN( s ) ) //remove non-numeric keys
              .sort( ( a, b ) => a - b );
              .map( s => loader[s] ) //get values for filtered keys
              .join( "" ); //join them

使用isNaN只獲取那些數字。 sort將在輸出數組中對您的keys進行sort ,然后通過該鍵訪問,您可以通過reduce或只使用map然后join來從loader對象獲取值。

 const loader = { "0": "b", "1": "a", "2": "r", // arbitrary extra fields: "foo": 123, "quux": 456, }; const obj = Object.keys(loader).filter(key => !isNaN(key)) .sort() .map(key => loader[key]) .join(''); console.log(obj); 

暫無
暫無

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

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