摘要:根據一個或者多個屬性對數組進行排序,支持嵌套的屬性。而且可以在每個條件中指定排序的方向,并支持傳入比較函數。
arr-sort
根據一個或者多個屬性對數組進行排序,支持嵌套的屬性。而且可以在每個條件中指定排序的方向,并支持傳入比較函數。安裝
采用 npm 安裝:
$ npm install --save arr-sort
采用 yarn 安裝:
$ yarn add arr-sort用法
通過給定的對象屬性進行排序:
var arrSort = require("arr-sort"); arrSort([{foo: "y"}, {foo: "z"}, {foo: "x"}],[{attr:"foo"}]); //=> [{foo: "x"}, {foo: "y"}, {foo: "z"}]
逆向排序
arrSort([{foo: "y"}, {foo: "z"}, {foo: "x"}],[{attr:"foo", asc: false}]); //=> [{foo: "z"}, {foo: "y"}, {foo: "x"}]參數
arrSort(array, comparisonArgs);
array: { Object Array } 待排序的數組
comparisonArgs: { Object Array } 一個或者多個對象組成的數組。 結構如下:{ "attr": attr, "asc": asc }
attr: { String } 對象屬性
asc: { Boolean | Function } 指定排序的方向
true: 升序(默認值)
false: 降序
function: 傳入的比較函數
注意如何沒有提供 attr 屬性, 則這次的排序會自動跳過
attr 屬性值類型可以是 string 或者 number
如果是 string, 我們采用 localeCompare 去比較排序
如果是 number, 我們直接比較值的大小
如果提供的比較函數沒有返回值,則這次的排序會自動跳過
例子1. 多重條件排序
var arrSort = require("arr-sort"); var array = [ { foo: "bbb", num: 4, flag: 2 }, { foo: "aaa", num: 3, flag: 1 }, { foo: "ccc", num: -6, flag: 2 }, { foo: "ccc", num: 8, flag: 2 }, { foo: "bbb", num: 2, flag: 4 }, { foo: "aaa", num: -3, flag: 4 } ]; // sort by `flag`, then `foo`, then `num` var result = arrSort(array, [{ attr: "flag", asc: true }, { attr: "foo", asc: false }, { attr: "num", asc: true }] ); console.log(result); // [ { foo: "aaa", num: 3, flag: 1}, // { foo: "ccc", num: -6, flag: 2}, // { foo: "ccc", num: 8, flag: 2}, // { foo: "bbb", num: 4, flag: 2}, // { foo: "bbb", num: 2, flag: 4}, // { foo: "aaa", num: -3, flag: 4} ]
2. 嵌套的屬性排序
var arrSort = require("arr-sort"); var array = [ { locals: { foo: "bbb", num: 4 }, flag: 2}, { locals: { foo: "aaa", num: 3 }, flag: 1}, { locals: { foo: "ccc", num: -6 }, flag: 2}, { locals: { foo: "ccc", num: 8 }, flag: 2}, { locals: { foo: "bbb", num: 2 }, flag: 4}, { locals: { foo: "aaa", num: -3 }, flag: 4}, ]; // sort by `flag`, then `locals.foo`, then `locals.num` var result = arrSort(array, [{ attr: "flag", asc: true }, { attr: "locals.foo", asc: false }, { attr: "locals.num", asc: true }] ); console.log(result); // [ { locals: { foo: "aaa", num: 3 }, flag: 1}, // { locals: { foo: "ccc", num: -6 }, flag: 2}, // { locals: { foo: "ccc", num: 8 }, flag: 2}, // { locals: { foo: "bbb", num: 4 }, flag: 2}, // { locals: { foo: "bbb", num: 2 }, flag: 4}, // { locals: { foo: "aaa", num: -3 }, flag: 4} ]
3. 傳入比較函數排序
如果提供了比較函數,數組會根據其返回值排序。比較函數具體可以參考docs
var arrSort = require("arr-sort"); var array = [ { locals: { foo: "bbb", num: 4 }, flag: -2}, { locals: { foo: "aaa", num: 3 }, flag: 1}, { locals: { foo: "ccc", num: -6 }, flag: 2}, { locals: { foo: "ccc", num: 8 }, flag: 2}, { locals: { foo: "bbb", num: 2 }, flag: 4}, { locals: { foo: "aaa", num: -3 }, flag: 4}, ]; // sort by `flag`, then `locals.foo`, then `locals.num` var result = arrSort(array, [{ attr: "flag", asc: function(a,b){return (Math.abs(a) - Math.abs(b))} }, { attr: "locals.foo", asc: false }, { attr: "locals.num", asc: true }] ); console.log(result); // [ { locals: { foo: "aaa", num: 3 }, flag: 1}, // { locals: { foo: "ccc", num: -6 }, flag: 2}, // { locals: { foo: "ccc", num: 8 }, flag: 2}, // { locals: { foo: "bbb", num: 4 }, flag: -2}, // { locals: { foo: "bbb", num: 2 }, flag: 4}, // { locals: { foo: "aaa", num: -3 }, flag: 4} ]關于 相關項目
arr-del: 一次性刪除數組指定index的元素 | homepage
集成測試跑集成測試是一個非常好的熟悉一個項目及其API的方法。你可以通過以下命令安裝依賴并跑測試:
$ npm install && npm test作者
tywei90
github/tywei90
blog/tywei90
許可證Copyright ? 2018, tywei90.
Released under the MIT License.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107520.html
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個參數代表返回值類型。的字面對象據稱也是哈希實現。 Java 丟了好多年,最近在揀起來,首先當然是了解這么多年來它的變化,于是發現了 Java 8 的java.util.stream。在學習和試驗的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時間寫過一篇《ES6 的 for..of 和 Ge...
摘要:系列公用委托都用于委托帶有返回值的的方法,所有都是最后一個參數代表返回值類型。的字面對象據稱也是哈希實現。 Java 丟了好多年,最近在揀起來,首先當然是了解這么多年來它的變化,于是發現了 Java 8 的java.util.stream。在學習和試驗的過程中,相比較于 C# 和 javascript,有那么些心得,作文以記之。 早些時間寫過一篇《ES6 的 for..of 和 Ge...
摘要:基礎布局的中主要為部分,分別是用于搜索篩選和分頁的表單控件用于排序表格的表頭以及用于展示數據的。這也是前瞻發布之后,提出廢棄部分功能后許多人反應較為強烈的原因。 與上周的第一篇實踐教程一樣,在這篇文章中,我將繼續從一種常見的功能——表格入手,展示Vue.js中的一些優雅特性。同時也將對filter功能與computed屬性進行對比,說明各自的適用場景,也為vue2.0版本中即將刪除的部...
摘要:基礎布局的中主要為部分,分別是用于搜索篩選和分頁的表單控件用于排序表格的表頭以及用于展示數據的。這也是前瞻發布之后,提出廢棄部分功能后許多人反應較為強烈的原因。 與上周的第一篇實踐教程一樣,在這篇文章中,我將繼續從一種常見的功能——表格入手,展示Vue.js中的一些優雅特性。同時也將對filter功能與computed屬性進行對比,說明各自的適用場景,也為vue2.0版本中即將刪除的部...
閱讀 2928·2021-11-04 16:06
閱讀 767·2021-09-30 09:56
閱讀 1832·2021-09-22 10:02
閱讀 2612·2019-08-29 13:43
閱讀 2198·2019-08-29 13:42
閱讀 2288·2019-08-29 12:21
閱讀 1038·2019-08-29 11:29
閱讀 1375·2019-08-26 13:51