EExcel 丞燕快速查詢2

EExcel 丞燕快速查詢2
EExcel 丞燕快速查詢2 https://sandk.ffbizs.com/

javascript firestore object sort



  const bookListsQuery = await modules.firestore.collection('books')
    .get();

  const sortedObj = Object.values(bookListsQuery.docs).sort(function(a, b){
    console.log('a %s  b %s', a.data().order, b.data().order)
    return Number(a.data().order) > Number(b.data().order);
  });
        
  sortedObj.forEach(function(doc){
    console.log(doc.data())
  });


other way

object use map to array, then it sorted.


  const bookListsQuery = await modules.firestore.collection('books')
    .get();

  const sortedArr = bookListsQuery.docs.map(function (doc) {  // 轉換成array
    return doc.data()
  });

  sortedArr.sort(function compare(a, b) {
     return a.order > b.order; // 升 小->大
  });

  sortedArr.forEach(function(data){
    console.log(data.data())
  })



==========

Sorting multiple object properties with JavaScript

https://bithacker.dev/javascript-object-multi-property-sort


let students = [{
  firstName: 'John',
  lastName: 'Appletree',
  grade: 12
},{
  firstName: 'Mighty',
  lastName: 'Peachtree',
  grade: 10
},{
  firstName: 'Kim',
  lastName: 'Appletree',
  grade: 11
},{
  firstName: 'Shooter',
  lastName: 'Appletree',
  grade: 12
}];


let sortBy = [{
  prop:'grade',
  direction: -1
},{
  prop:'lastName',
  direction: 1
}];


array.sort(function(a,b){
  let i = 0, result = 0;
  while(i < sortBy.length && result === 0) {
    result = sortBy[i].direction*(a[ sortBy[i].prop ].toString() < b[ sortBy[i].prop ].toString() ? -1 : (a[ sortBy[i].prop ].toString() > b[ sortBy[i].prop ].toString() ? 1 : 0));
    i++;
  }
  return result;
})