Order
Returns a permutation which rearranges an input array.
Install / Use
/learn @Planeshifter/OrderREADME
order
Returns a permutation which rearranges input array.
Installation
Install from npm:
npm install order-permutation
Use as follows:
var order = require( 'order-permutation' );
order( arr, [compareFunction] )
The exported function requires as its first parameter the array for which the indices in specified order should be obtained. The optional parameter compareFunction specifies a function defining the sort order. If not supplied, the returned permutation indices of the array sort its elements in increasing order. To sort more complicated objects than numeric primitives, a custom compareFunction has to be supplied. This function compares elements a and b according to the following rules:
- If
compareFunction(a, b)is less than 0, a gets a lower index than b - If
compareFunction(a, b)is greater than 0, b gets a lower index than a.
Therefore, the standard compare function which sorts the elements in ascending order is equivalent to
function( a, b ) {
if (a < b) {
return -1;
}
if (a > b) {
return 1;
}
return 0;
};
Examples
Increasing Sequence:
Code:
order([1, 2, 3, 4])
Output:
[0, 1, 2, 3]
Decreasing Sequence:
Code:
order([4, 3, 2, 1])
Output:
[3, 2, 1, 0]
Custom Compare Function:
Code:
var arr = [{name:"Tom", age: 28}, {name:"Lisa",age:23},{name:"Bill", age: 65}]
// order decreasing with age:
order(arr, function(a,b){
return b.age - a.age;
});
Output:
[2, 0, 1]
Obtaining the Sorted Array
To obtain the actual sorted array, one can use the at() function of the lodash library, like so:
var arr = [5, 1, 3, 2];
var indices = order(arr);
_.at(arr, indices)
Output:
[ 1, 2, 3, 5 ]
Unit Tests
Run tests via the command npm test
License
Related Skills
node-connect
345.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
106.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
