js对象数组深度去重和深度排序

使用collect.js处理数组和对象
https://github.com/ecrmnn/collect.js/#
引入collect.js
https://github.com/ecrmnn/collect.js/#installation
npm install collect.js --save
或
<script src="https://cdn.jsdelivr.net/npm/collect.js@4.0.25/build/collect.min.js"></script>
深度去重
https://github.com/ecrmnn/collect.js/#unique
简单数组去重
const collection = collect([1, 1, 1, 2, 3, 3]); const unique = collection.unique(); unique.all(); //=> [1, 2, 3]
对象数组去重
const collection = collect([
{ name: 'iPhone 6', brand: 'Apple', type: 'phone' },
{ name: 'iPhone 5', brand: 'Apple', type: 'phone' },
{ name: 'Apple Watch', brand: 'Apple', type: 'watch' },
{ name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
{ name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
]); const unique = collection.unique('brand'); unique.all(); //=> [
//=> { name: 'iPhone 6', brand: 'Apple', type: 'phone' },
//=> { name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
//=> ]
对象数组回调函数处理去重
const collection = collect([
{ name: 'iPhone 6', brand: 'Apple', type: 'phone' },
{ name: 'iPhone 5', brand: 'Apple', type: 'phone' },
{ name: 'Apple Watch', brand: 'Apple', type: 'watch' },
{ name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
{ name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
]); const unique = collection.unique(function (item) {
return item.brand + item.type;
}); unique.all(); //=> [
//=> { name: 'iPhone 6', brand: 'Apple', type: 'phone' },
//=> { name: 'Apple Watch', brand: 'Apple', type: 'watch' },
//=> { name: 'Galaxy S6', brand: 'Samsung', type: 'phone' },
//=> { name: 'Galaxy Gear', brand: 'Samsung', type: 'watch' },
//=> ]
简单排序和深度排序
简单数组排序
https://github.com/ecrmnn/collect.js/#sort
const collection = collect([5, 3, 1, 2, 4]); const sorted = collection.sort(); sorted.all(); //=> [1, 2, 3, 4, 5]
简单数组回调函数处理排序
const collection = collect([5, 3, 1, 2, 4]);
const sorted = collection.sort(function (a, b) {
return b - a;
});
sorted.all();
//=> [5, 4, 3, 2, 1]
对象数组排序
https://github.com/ecrmnn/collect.js/#sortby
const collection = collect([
{ name: 'Desk', price: 200 },
{ name: 'Chair', price: 100 },
{ name: 'Bookcase', price: 150 },
]); const sorted = collection.sortBy('price'); sorted.all(); //=> [
//=> { name: 'Chair', price: 100 },
//=> { name: 'Bookcase', price: 150 },
//=> { name: 'Desk', price: 200 },
//=> ]
对象数组回调函数处理排序
const collection = collect([
{ name: 'Desk', colors: ['Black', 'Mahogany'] },
{ name: 'Chair', colors: ['Black'] },
{ name: 'Bookcase', colors: ['Red', 'Beige', 'Brown'] },
]); const sorted = collection.sortBy(function (product, key) {
return product['colors'].length;
}); sorted.all(); //=> [
//=> { name: 'Chair', colors: ['Black'] },
//=> { name: 'Desk', colors: ['Black', 'Mahogany'] },
//=> { name: 'Bookcase', colors: ['Red', 'Beige', 'Brown'] },
//=> ]
降序排序
使用方法和sortBy一样,但得到降序结果
https://github.com/ecrmnn/collect.js/#sortbydesc
==============================================
本文链接:https://www.cnblogs.com/stumpx/p/9515848.html
==============================================
js对象数组深度去重和深度排序的更多相关文章
- js对象数组多字段排序
来源:js对象数组按照多个字段进行排序 一.数组排序 Array.sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序. 一般用法:(数组元素从小大进行排序) var a = ...
- js 对象数组去重
var arr = [{ "name": "ZYTX", "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4h ...
- JS对象—数组总结(创建、属性、方法)
JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- js对象数组中的某属性值 拼接成字符串
js对象数组中的某属性值 拼接成字符串 var objs=[ {id:1,name:'张三'}, {id:2,name:'李四'}, {id:3,name:'王五'}, {id:4,name:'赵六' ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...
- js对象,数组,字符串的操作
循环绑定=>变量污染 for (var i = 0;i<lis.length;i++){ lis[i].index = i;#给页面元素对象添加一个任意属性(保留索引的属性index) # ...
- JS 对象 数组求并集,交集和差集
一.JS数组求并集,交集和差集 需求场景 最近,自己项目中有一些数组操作,涉及到一些数学集的运算,趁着完成后总结一下. 简化问题之后,现有两数组a = [1, 2, 3],b = [2, 4, 5], ...
- js对象数组按属性快速排序
前一篇<关于selector性能比赛>中提到,目测觉得在$("div,p,a")这样有逗号时,sizzle耗时异常(600多个元素,花了200ms),说是它可能没有优化 ...
随机推荐
- 2016/05/10 thinkphp 3.2.2 ①系统常量信息 ②跨控制器调用 ③连接数据库配置及Model数据模型层 ④数据查询
[系统常量信息] 获取系统常量信息: 如果加参数true,会分组显示: 显示如下: [跨控制器调用] 一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法. 跨控制器调用可以节省我 ...
- BZOJ 2243: [SDOI2011]染色 树链剖分+线段树区间合并
2243: [SDOI2011]染色 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数 ...
- 返回模式有流式(streaming)和整体(total) 热词词表解决方案
重要术语说明_语音识别(ASR)_智能语音交互-阿里云 https://help.aliyun.com/document_detail/72238.html 返回模式(response mode) ...
- res_d_l =[{'contents':d.contents,'href':d.attrs['href']} for d in rd] 泛型
from selenium import webdriverfrom selenium.webdriver.chrome.options import Options# from selenium.w ...
- mybatis_2
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- java 编码设置
- wpa_supplicant - 强有力的终端 wifi 配置工具【转】
本文转载自:http://rickgray.me/2015/08/03/useful-command-tool-for-wifi-connection.html 最近网购了一套Raspberry-Pi ...
- UVA315 Network —— 割点
题目链接:https://vjudge.net/problem/UVA-315 A Telephone Line Company (TLC) is establishing a new telepho ...
- YTU 2911: 我想放假
2911: 我想放假 时间限制: 1 Sec 内存限制: 128 MB 提交: 124 解决: 46 题目描述 小明的弟弟上小学了,每次刚入学就想知道什么时候放假,但是每学期开学的日子和每学期的有 ...
- idea output 悬浮浮动问题
参考:https://www.cnblogs.com/thinkingandworkinghard/p/6306800.html 点这个就ok