vue数组对象极快获取最大值和最小值linq插件各种常用好用方法,提高开发效率
需求:因后端传入的数据过多,前端需要在数组中某一值的的最大值和最小值计算,平常用的最多的不就是遍历之后再比对吗,或者用sort方法等实现,同事交了我一招,一句话就可以获取到数组对象中最大值和最小值,那就是用linq插件,确实好用,用法也很简单,故而分享给大家~
1.求数组对象的某一属性的最大值和最小值
方法一,使用linq插件
1.1先下载
npm install linq -S
1.2导入,可以局部或者全局,根据自己的需求来
import Enumerable from 'linq';
1.3使用
-
const items: [
-
{ id: 0, value: -5 },
-
{ id: 1, value: 10 },
-
{ id: 2, value: -15 },
-
{ id: 3, value: 44 },
-
{ id: 4, value: 44 },
-
{ id: 5, value: -5 }
-
],
-
// 筛选最大值和最小值
-
const min = Enumerable.from(this.items).min(item => item.value);
-
const max = Enumerable.from(this.items).max(item => item.value);
方法二,使用math实现,这个方法没上个好,要进行筛选
-
let arr=[2,4,56,5,7,33];
-
var obj=Math.max.apply(null,arr);
-
var min=Math.min.apply(null,arr);
-
console.log(obj,'最大值')
-
console.log(min,'最大值')
2.根据条件筛选所需值
-
// 条件筛选出偶数,得到的值一定是满足where中条件的
-
const arr = [1, 2, 3, 4, 5];
-
this.result = Enumerable.from(arr)
-
.where(x => x % 2 === 0)
-
.toArray();
-
console.log(this.result); // [2, 4]
3.数组对象去重
-
-
const items= [
-
{ id: 0, value: -5 },
-
{ id: 1, value: 10 },
-
{ id: 2, value: -15 },
-
{ id: 3, value: 44 },
-
{ id: 4, value: 44 },
-
{ id: 5, value: -5 }
-
-
// { id: 3, value: "-220" }
-
],
-
// linq的去重
-
this.quchong = Enumerable.from(this.items)
-
.distinct(item => item.value)
-
.toArray();
4.筛选查询特定的值,就是filter的功能
-
// 筛选查询特定的值
-
this.select = Enumerable.from(this.items)
-
.select(item => item.value)
-
.toArray();
5.升序降序功能
-
var myList = [
-
{ Name: 'Jim', Age: 20 },
-
{ Name: 'Kate', Age: 21 },
-
{ Name: 'Lilei', Age: 18 },
-
{ Name: 'John', Age: 14 },
-
{ Name: 'LinTao', Age: 25 }
-
];
-
this.orderByup = Enumerable.from(this.items)
-
.orderBy(x => x.value)
-
.toArray(); //升序
-
this.orderBydown = Enumerable.from(myList)
-
.orderByDescending(x => x.Age)
-
.toArray(); //降序
6.完整例子代码
-
<template>
-
<div class="content-box">
-
<div class="container">
-
<span>原数组{{ items }}</span>
-
<br />
-
<span>最小值:{{ min }},最大值:{{ max }}</span>
-
<br />
-
<span>筛选后的值{{ result }}</span>
-
<br />
-
<span>去重后的数组{{ quchong }}</span>
-
<br />
-
<span>只要value的值{{ select }}</span>
-
<br />
-
<span>升序:{{ orderByup }}</span>
-
<br />
-
降序:{{ orderBydown }}
-
</div>
-
</div>
-
</template>
-
-
<script>
-
import Enumerable from 'linq';
-
export default {
-
data() {
-
return {
-
items: [
-
{ id: 0, value: -5 },
-
{ id: 1, value: 10 },
-
{ id: 2, value: -15 },
-
{ id: 3, value: 44 },
-
{ id: 4, value: 44 },
-
{ id: 5, value: -5 }
-
-
// { id: 3, value: "-220" }
-
],
-
min: 0,
-
max: 0,
-
result: [],
-
quchong: [],
-
select: [],
-
groupBy: [],
-
orderByup: [],
-
orderBydown: []
-
};
-
},
-
mounted() {
-
this.query();
-
},
-
methods: {
-
query() {
-
// 筛选最大值和最小值
-
this.min = Enumerable.from(this.items).min(item => item.value);
-
this.max = Enumerable.from(this.items).max(item => item.value);
-
// 条件筛选出偶数,得到的值一定是满足where中条件的
-
const arr = [1, 2, 3, 4, 5];
-
this.result = Enumerable.from(arr)
-
.where(x => x % 2 === 0)
-
.toArray();
-
console.log(this.result); // [2, 4]
-
-
// linq的去重
-
this.quchong = Enumerable.from(this.items)
-
.distinct(item => item.value)
-
.toArray();
-
-
// 筛选查询特定的值
-
this.select = Enumerable.from(this.items)
-
.select(item => item.value)
-
.toArray();
-
// 分组
-
var myList = [
-
{ Name: 'Jim', Age: 20 },
-
{ Name: 'Kate', Age: 21 },
-
{ Name: 'Lilei', Age: 18 },
-
{ Name: 'John', Age: 14 },
-
{ Name: 'LinTao', Age: 25 }
-
];
-
this.orderByup = Enumerable.from(this.items)
-
.orderBy(x => x.value)
-
.toArray(); //升序
-
this.orderBydown = Enumerable.from(myList)
-
.orderByDescending(x => x.Age)
-
.toArray(); //降序
-
-
var array1 = [1, 412, 5, 3, 5, 412, 7];
-
var array2 = [20, 12, 5, 5, 7, 310];
-
const except = Enumerable.from(array1).except(array2).toArray(); //结果3,412,1
-
console.log(except, '取差集,差集就是俩个数组中不相同的值');
-
-
var array1 = [1, 412, 5, 3, 5, 412, 7];
-
var array2 = [20, 12, 5, 5, 7, 310];
-
const intersect = Enumerable.from(array1).intersect(array2).toArray();
-
//结果5,7
-
console.log(intersect, '取交集,交集就是俩个数组相同的值');
-
}
-
}
-
};
-
</script>
-
-
<style lang="scss" scoped></style>
常用的差不多就这些了,还有一些其他方法可以自行探索~文章到此结束,希望对你有所帮助~
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkbeaj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22