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