2017-07-03 135 views
1

的基礎上的屬性之一的值對象的數組我有對象訂購數組

使用for循環我正在重新排序我的基礎上,財產PHONETYPE的值對象的數組的數組。由於這是來自api的數據響應,因此我總是說我的返回寄存器中首先放置具有Primary的phoneType的電話號碼。

問題給你...我不確定這是否是最好的方式來做到這一點。有沒有不同的方式來完成這一點?我正在考慮使用Object.Keys來做到這一點,但無法弄清楚。

這裏是我的循環:

export function examplefunctionForStackOverflow(phoneNumbers) { 
    const phoneNumberArray = []; 

    if (typeof phoneNumbers !== 'undefined') { 
    for (const i in phoneNumbers) { 

     const number = phoneNumbers[i].number; 
     const phoneType = phoneNumbers[i].phoneType; 

     phoneNumbers[i].phoneType === "Primary" ? 
     phoneNumberArray.unshift({ 
      key: phoneType, 
      value: number 
     }) : 
     phoneNumberArray.push({ 
      key: phoneType, 
      value: number 
     }); 
    } 
    } 
    return phoneNumberArray; 
} 


    data: { 
    phoneNumbers: [{ 
     number: "(999) 999-9999", 
     extension: "", 
     phoneType: "CELL" 
    }, 
    { 
     number: "(888) 888-8888", 
     extension: "", 
     phoneType: "Primary" 
    }, 
    { 
     number: "(777) 777-7777", 
     extension: "777", 
     phoneType: "WORK" 
    } 
    ] 
+0

這裏是你可能已經張貼在代碼中的[MCVE]使用'<>'snippet編輯器https://jsfiddle.net/hc447rog/ – mplungjan

回答

2

您可以在陣列簡單排序:

let data = { 
 
    phoneNumbers: [{ 
 
     number: "(999) 999-9999", 
 
     extension: "", 
 
     phoneType: "CELL" 
 
    }, 
 
    { 
 
     number: "(888) 888-8888", 
 
     extension: "", 
 
     phoneType: "Primary" 
 
    }, 
 
    { 
 
     number: "(777) 777-7777", 
 
     extension: "777", 
 
     phoneType: "WORK" 
 
    } 
 
    ] 
 
}; 
 

 
data.phoneNumbers.sort((a, b) => { 
 
    if (a.phoneType === 'Primary') return -1; 
 
    return 1; 
 
}); 
 

 
console.log(data.phoneNumbers);