unit_test_sort.js 1.42 KB

const fs = require('fs');

let keysToSortBy = ["accountPayables.updatedDate"];
let sortOrders = ["asc"];

let rawdata = fs.readFileSync('response_company_suppier.json');
let data = JSON.parse(rawdata);

function compareObjects(a, b) {
    for (let i = 0; i < keysToSortBy.length; i++) {
      const key = keysToSortBy[i];
      const sortOrder = sortOrders[i];

      const valueA = getObjectValue(a, key);
      const valueB = getObjectValue(b, key);

      if (valueA === undefined && valueB !== undefined) {
        return sortOrder === 'asc' ? 1 : -1;
      } else if (valueA !== undefined && valueB === undefined) {
        return sortOrder === 'asc' ? -1 : 1;
      } else if (valueA === undefined && valueB === undefined) {
        return 0; // Move to the next key if both values are undefined
      }
  
      if (valueA < valueB) {
        return sortOrder === 'asc' ? -1 : 1;
      } else if (valueA > valueB) {
        return sortOrder === 'asc' ? 1 : -1;
      }
    }
  
    return 0; // Objects are equal
  }

  if (keysToSortBy.length > 0 && sortOrders.length > 0) {
    data.sort(compareObjects)
  }

  function getObjectValue(obj, stringKey) {
    const keys = stringKey.split('.');
    let value = obj;
    
    for (let key of keys) {
      value = value[key];
      
      if (value === undefined) {
        break;
      }
    }
    
    return value;
  }

  for(let d of data) {
    console.log(d.accountPayables.updatedDate)
  }