Order an array of objects by the key 'weight' (or another key)
Installation
Development
git clone https://github.com/plepe/weight-sort
cd weight-sort
composer install
npm install
Usage
NodeJS
var weightSort =
In-Browser
PHP
include "path/to/weightSort.php";
SYNOPSIS
arr =
Sort the input array by the key 'weight' or as specified by the options. Returns the sorted array, the original array will not be changed.
If there are several entries with the same weight, the original order will remain.
Options: Can be either a string, which will define a different key or an object (array in PHP mode) with the following properties:
- key: an alternative key by which to sort
- reverse: boolean. if true, order from highest value to lowest.
- compareFunction: Specifies a function that defines the sort order. The function is compatible with
array.sort()
. It will be passed two key values and should return -1, 0 or 1. See below for an example.
Example
var origArray = name: 'Alice' weight: 625 height: 160 name: 'Bob' weight: 770 height: 180 name: 'Charly' weight: 825 height: 180 name: 'Debby' weight: 625 height: 165 name: 'Earl' weight: 800 height: 185 /* Default: order elements by 'weight' */var sortedArray = console// [// { name: 'Alice', weight: 62.5, height: 160 },// { name: 'Debby', weight: 62.5, height: 165 },// { name: 'Bob', weight: 77.0, height: 180 },// { name: 'Earl', weight: 80.0, height: 185 },// { name: 'Charly', weight: 82.5, height: 180 }// ] /* Optional: order elements by 'height' */var sortedArray = console// [// { name: 'Alice', weight: 62.5, height: 160 },// { name: 'Debby', weight: 62.5, height: 165 },// { name: 'Bob', weight: 77.0, height: 180 },// { name: 'Charly', weight: 82.5, height: 180 },// { name: 'Earl', weight: 80.0, height: 185 }// ] /* Optional: alternative compareFunction (closest height to '179') */var sortedArray = console// [// { name: 'Bob', weight: 77.0, height: 180 },// { name: 'Charly', weight: 82.5, height: 180 },// { name: 'Earl', weight: 80.0, height: 185 }// { name: 'Debby', weight: 62.5, height: 165 },// { name: 'Alice', weight: 62.5, height: 160 },// ]