Socket
Socket
Sign inDemoInstall

sort-object

Package Overview
Dependencies
Maintainers
2
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sort-object - npm Package Compare versions

Comparing version 1.0.0 to 2.0.0

LICENSE

82

index.js

@@ -12,30 +12,24 @@ /*!

var sortAsc = require('sort-asc');
var get = require('get-value');
module.exports = function (obj, options) {
var sort = {desc: sortDesc, asc: sortAsc};
var fn, opts = {}, keys = Object.keys(obj);
var sortFns = {desc: sortDesc, asc: sortAsc};
// if `options` is an array, assume it's keys
module.exports = sort;
function sort (obj, options) {
if (Array.isArray(options)) {
opts.keys = options;
options = {};
// if `options` is a function, assume it's a sorting function
} else if (typeof options === 'function') {
fn = options;
} else {
for (var opt in options) {
if (options.hasOwnProperty(opt)) {
opts[opt] = options[opt]
}
}
options = { keys: options };
}
// Default sort order is descending
fn = opts.sort || sortDesc;
var opts = options || {};
var prop = opts.prop;
var getFn = opts.get || get;
var fn = opts.sort || sortDesc;
if (Boolean(opts.sortOrder)) {
fn = sort[opts.sortOrder.toLowerCase()];
fn = sortFns[opts.sortOrder.toLowerCase()];
}
var keys = opts.keys || [];
if (Boolean(opts.sortBy)) {

@@ -47,3 +41,2 @@ keys = opts.sortBy(obj);

if (Boolean(opts.keys)) {
keys = opts.keys;
if (!opts.sort && !opts.sortOrder && !opts.sortBy) {

@@ -54,15 +47,48 @@ fn = null;

var tmp = {};
var sortBy = {};
var build = keys.length === 0 ? fromObj : fromKeys;
build(obj, keys, tmp, sortBy, function (val, key) {
return prop ? getFn(val, prop) : key;
});
if (fn) {
keys = keys.sort(fn);
keys.sort(fn);
}
var o = {};
var len = keys.length;
var i = -1;
var len = keys.length, i = 0, j = 0;
var res = {}, prev;
while (len--) {
var key = keys[i++];
if (prev !== key) j = 0;
var k = sortBy[key][j++];
res[k] = tmp[k];
prev = key;
}
return res;
}
while (++i < len) {
o[keys[i]] = obj[keys[i]];
// build up the sorting information from the `obj`
function fromObj (obj, keys, tmp, sortBy, fn) {
for (var key in obj) {
var val = obj[key];
var item = fn(val, key);
sortBy[item] = sortBy[item] || [];
sortBy[item].push(key);
keys.push(item);
tmp[key] = val;
}
}
return o;
};
// build up the sorting information from the supplied keys
function fromKeys (obj, keys, tmp, sortBy) {
var len = keys.length, i = 0;
while (len--) {
var key = keys[i++];
var val = obj[key];
sortBy[key] = sortBy[key] || [];
sortBy[key].push(key);
tmp[key] = val;
}
}
{
"name": "sort-object",
"description": "Sort the keys in an object.",
"version": "1.0.0",
"version": "2.0.0",
"homepage": "https://github.com/doowb/sort-object",

@@ -42,2 +42,3 @@ "author": {

"dependencies": {
"get-value": "^1.1.5",
"sort-asc": "^0.1.0",

@@ -44,0 +45,0 @@ "sort-desc": "^0.1.1"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc