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),说是它可能没有优化 ...
随机推荐
- 【PLSQL Developer】PLSQL Developer SQL Editor 乱码问题
[问题]我们常常在PLSQL Developer的SQL窗体编写各种语句.当须要保存这些语句时,能够另存为文本文件,也能够复制后粘贴到Word文件里.放在Word文件里的优点是语句保留原来的格式,能够 ...
- IOS开发基础之—MD5加密算法【转】
原文地址:http://blog.csdn.net/pjk1129/article/details/6855024 #import <CommonCrypto/CommonDigest.h> ...
- Fluently NHibernate映射多个实体程序集
Fluently NHibernate有个好处就是可以在代码里定义实体类,而不必写冗长的XML. 但通常,一个项目对应的所有的实体类,都编译成一个DLL.如果有个项目,是在某个父项目的基础上再扩展,那 ...
- ExtJs 中获取 radiobutton 的值
ExtJs中使用radiobutton,想在ExtJs本身代码中(注意,不是在后台喔)获取 radioButton 的值,居然发现很难,无从下手的感觉.后来在网上寻寻觅觅,痛苦摸索之后,真是大跌眼镜. ...
- Educational Codeforces Round 18 C. Divide by Three DP
C. Divide by Three A positive integer number n is written on a blackboard. It consists of not more ...
- lambda和抽象类
lambda的使用条件是‘一个接口仅有一个待实现的方法’: so,lambda不能使用在抽象类上,使用后或提示‘Target type of a lambda conversion must be a ...
- Windows7 配置匿名Samba文件共享
1.环境 系统:Windows 7 SP1 IP:192.168.118.151 2.配置 计算机|管理|本地用户和组|用户|Guest-->去掉账户已禁用 cmd|gpedit.msc|本地计 ...
- UVA315 Network —— 割点
题目链接:https://vjudge.net/problem/UVA-315 A Telephone Line Company (TLC) is establishing a new telepho ...
- Java 抽象类和接口的理解
Java 抽象类和接口的理解 一.抽象类 为什么使用抽象类(个人理解): 面向对象的概念是,我们知道的所有的对象都是通过类来描绘的,如果类包含的信息不能描绘一个具体的对象,就需要抽象来解决了,意思是一 ...
- Resolve the error: an error occurred during local report processing
Issue: an error occurred during local report processing.the definition of the report'Main Report'is ...