JavaScript 對象數組操作(屬性值存在,排序,最大最小)

最近需要將一個對象數組存到數據庫中, 然後又要進行各種操作,這裏寫一個sample來記錄操作方式。嗯 室友叫John,這裏就寫一個找John吧。sample有以下功能:

  • 查找對象數組中某個對象屬性值是否存在並返回完整對象
  • 查找對象數組中某個對象屬性值是否存在並返回Index
  • 以對象數組中對象某個屬性排序
  • 找出對象數組中某個屬性的最大最小值
let testArray = [
    {
        id:0,
        name:'Allen'//BD
    },
    {
        id:3,
        name:'Peter'//leader
    },
    {
        id:2,
        name:'John'//QA室友
    },
    {
        id:5,
        name:'Andy'
    },
]

//功能:判斷John是否存在,並輸出obejcet
//find方法:數組實例的find方法,用於找出第一個符合條件的數組成員。它的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值爲true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined。

console.info(testArray.find((element)=>element.name === "John");
//輸出: { id: 2, name: 'John' }

//功能:查找John 的所在位置
//findIndex:數組實例的findIndex方法的用法與find方法非常類似,返回第一個符合條件的數組成員的位置,如果所有成員都不符合條件,則返回-1。

console.info(testArray.findIndex((element)=>element.name === "John");
//輸出: 2 


//功能:對testArray以id排序
//sort:sort() 方法用於對數組的元素進行排序。參數爲 比較函數實現該函數要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字,若a小於b在排序後的數組中a應該出現在b之前,則返回一個小於0的值

console.info(testArray.sort((a,b)=>a.id - b.id));//(element)=>sortNumber(element.id))); 升序
// 輸出
// [ { id: 0, name: 'Allen' },
//   { id: 2, name: 'John' },
//   { id: 3, name: 'Peter' },
//   { id: 5, name: 'Andy' } ]

//功能:對testArray 找出id最大值 和最小值
//reduce:reduce()把結果繼續和序列的下一個元素做累積計算,在reduce參數中寫一個最大值比較,返回最大值和序列後續值進行比較 

console.info(testArray.reduce((pre,cur)=>pre.id >cur.id ? pre:cur);//最大值
console.info(testArray.reduce((pre,cur)=>pre.id < cur.id ? pre:cur);//最小值
// 輸出
// { id: 5, name: 'Andy' }
// { id: 0, name: 'Allen' }
// 看起來性能應該是有問題,可以用更好求值算法



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章