sort-object-keys
Advanced tools
+2
-2
@@ -13,4 +13,4 @@ // From DefinitelyTyped by Emily Marigold Klassen <https://github.com/forivall> | ||
| sortWith?: ReadonlyArray<keyof T> | ((a: keyof T, b: keyof T) => number), | ||
| ): T; | ||
| ): T | ||
| export default sortObjectByKeyNameList; | ||
| export default sortObjectByKeyNameList |
+8
-8
@@ -1,22 +0,22 @@ | ||
| const has = (object, key) => Object.prototype.hasOwnProperty.call(object, key); | ||
| const has = (object, key) => Object.prototype.hasOwnProperty.call(object, key) | ||
| export default function sortObjectByKeyNameList(object, sortWith) { | ||
| let keys, sortFn, key; | ||
| let keys, sortFn, key | ||
| if (typeof sortWith === 'function') { | ||
| sortFn = sortWith; | ||
| sortFn = sortWith | ||
| } else { | ||
| keys = sortWith; | ||
| keys = sortWith | ||
| } | ||
| const total = {}; | ||
| const objectKeys = [...(keys ?? []), ...Object.keys(object).sort(sortFn)]; | ||
| const total = {} | ||
| const objectKeys = [...(keys ?? []), ...Object.keys(object).sort(sortFn)] | ||
| for (key of objectKeys) { | ||
| if (has(object, key)) { | ||
| total[key] = object[key]; | ||
| total[key] = object[key] | ||
| } | ||
| } | ||
| return total; | ||
| return total | ||
| } |
+9
-5
| { | ||
| "name": "sort-object-keys", | ||
| "version": "2.0.1", | ||
| "version": "2.1.0", | ||
| "description": "Sort an object's keys, including an optional key list", | ||
@@ -23,6 +23,4 @@ "keywords": [ | ||
| ".": { | ||
| "import": { | ||
| "types": "./index.d.ts", | ||
| "default": "./index.js" | ||
| } | ||
| "types": "./index.d.ts", | ||
| "default": "./index.js" | ||
| } | ||
@@ -37,2 +35,3 @@ }, | ||
| "scripts": { | ||
| "format": "prettier -w .", | ||
| "prepare": "husky", | ||
@@ -42,6 +41,11 @@ "sort": "sort-package-json", | ||
| }, | ||
| "prettier": { | ||
| "semi": false, | ||
| "singleQuote": true | ||
| }, | ||
| "devDependencies": { | ||
| "husky": "^9.1.7", | ||
| "prettier": "^3.6.2", | ||
| "sort-package-json": "^3.4.0" | ||
| } | ||
| } |
+58
-39
@@ -10,46 +10,65 @@ # Sort Object | ||
| ```js | ||
| import assert from 'assert'; | ||
| import sortObject from 'sort-object-keys'; | ||
| import assert from 'assert' | ||
| import sortObject from 'sort-object-keys' | ||
| assert.equal(JSON.stringify({ | ||
| c: 1, | ||
| b: 1, | ||
| d: 1, | ||
| a: 1, | ||
| }), JSON.stringify({ | ||
| a: 1, | ||
| b: 1, | ||
| c: 1, | ||
| d: 1, | ||
| })); | ||
| assert.equal( | ||
| JSON.stringify({ | ||
| c: 1, | ||
| b: 1, | ||
| d: 1, | ||
| a: 1, | ||
| }), | ||
| JSON.stringify({ | ||
| a: 1, | ||
| b: 1, | ||
| c: 1, | ||
| d: 1, | ||
| }), | ||
| ) | ||
| assert.equal(JSON.stringify(sortObject({ | ||
| c: 1, | ||
| b: 1, | ||
| d: 1, | ||
| a: 1, | ||
| }, ['b', 'a', 'd', 'c'])), JSON.stringify({ | ||
| b: 1, | ||
| a: 1, | ||
| d: 1, | ||
| c: 1, | ||
| })); | ||
| assert.equal( | ||
| JSON.stringify( | ||
| sortObject( | ||
| { | ||
| c: 1, | ||
| b: 1, | ||
| d: 1, | ||
| a: 1, | ||
| }, | ||
| ['b', 'a', 'd', 'c'], | ||
| ), | ||
| ), | ||
| JSON.stringify({ | ||
| b: 1, | ||
| a: 1, | ||
| d: 1, | ||
| c: 1, | ||
| }), | ||
| ) | ||
| function removeKeyAncCompareIndex(keyA, keyB){ | ||
| var a = parseInt(keyA.slice(4)); | ||
| var b = parseInt(keyB.slice(4)); | ||
| return a - b; | ||
| function removeKeyAncCompareIndex(keyA, keyB) { | ||
| var a = parseInt(keyA.slice(4)) | ||
| var b = parseInt(keyB.slice(4)) | ||
| return a - b | ||
| } | ||
| assert.equal(JSON.stringify(sortObject({ | ||
| "key-1": 1, | ||
| "key-3": 1, | ||
| "key-10": 1, | ||
| "key-2": 1, | ||
| }, removeKeyAncCompareIndex)), JSON.stringify({ | ||
| "key-1": 1, | ||
| "key-2": 1, | ||
| "key-3": 1, | ||
| "key-10": 1, | ||
| })); | ||
| assert.equal( | ||
| JSON.stringify( | ||
| sortObject( | ||
| { | ||
| 'key-1': 1, | ||
| 'key-3': 1, | ||
| 'key-10': 1, | ||
| 'key-2': 1, | ||
| }, | ||
| removeKeyAncCompareIndex, | ||
| ), | ||
| ), | ||
| JSON.stringify({ | ||
| 'key-1': 1, | ||
| 'key-2': 1, | ||
| 'key-3': 1, | ||
| 'key-10': 1, | ||
| }), | ||
| ) | ||
| ``` |
3383
8.01%74
34.55%3
50%