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,1console.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,7console.log(intersect, '取交集,交集就是俩个数组相同的值');}}
};
</script><style lang="scss" scoped></style>

常用的差不多就这些了,还有一些其他方法可以自行探索~文章到此结束,希望对你有所帮助~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Jenkins】Jenkins构建前端流水线

目录 一、前言二、新建前端流水线1、点击新建任务2、填写流水线名称&#xff08;这里我选择的是自由风格的软件项目&#xff09;&#xff0c;任务名称一般格式为&#xff1a;项目名称-前后端3、创建成功后的结果 三、配置前端流水线1、进入刚创建好的任务页面中&#xff0c;点击…

133、仿真-基于51单片机太阳能热水器水温水位智能监控仪报警设计(Proteus仿真+程序+配套资料等)

方案选择 单片机的选择 方案一&#xff1a;STM32系列单片机控制&#xff0c;该型号单片机为LQFP44封装&#xff0c;内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ&#xff0c;在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

基于FPGA的一维卷积神经网络算法实现(1D-CNN、BNN的FPGA加速实现)

文章目录 概要网络结构一维卷积介绍&#xff08;科普性质&#xff09;FPGA架构FPGA端口定义操作步骤结果演示总结 概要 本文介绍一种基于FPGA的1维卷积神经网络算法加速实现的方案&#xff0c;其中为了进一步提升运算速度&#xff0c;除了第一层卷积采用的是普通卷积运算&…

在Redis主从系统中使用哨兵

一、什么是哨兵 Redis的哨兵&#xff08;Sentinel&#xff09;是Redis分布式系统中的一种特殊角色&#xff0c;用于监控和管理Redis主从复制架构中的主节点&#xff08;master&#xff09;和从节点&#xff08;slave&#xff09;。 哨兵的主要功能是确保Redis系统的高可用性。它…

语言模型的自洽性思维链推理技术

论文标题&#xff1a;Self-Consistency Improves Chain of Thought Reasoning in Language Models 论文链接&#xff1a;https://arxiv.org/abs/2203.11171 论文来源&#xff1a;ICLR 2023 一、概述 尽管语言模型在一系列NLP任务中展现出了显著的成功&#xff0c;但它们在推理能…

听GPT 讲K8s源代码--pkg(四)

/pkg/controlplane、/pkg/credentialprovider、/pkg/kubeapiserver是Kubernetes中的三个核心包&#xff0c;它们分别实现了不同的功能。 /pkg/controlplane包 /pkg/controlplane是Kubernetes的一个包&#xff0c;它包含了控制平面组件的实现&#xff0c;例如API Server、Contro…

Flask_自定义flask的cmd命令

创建自定义命令 from flask import Flaskapp Flask(__name__)app.cli.command() def hello():"""命令说明写这里"""print("hello python")if __name__ __main__:app.run() 执行flask --help 可以在命令查看定义的命令 注意事项&a…

请问如何用oracle触发器实现不允许新增/删除表/增加/减少/修改字段类型

请问如何用oracle触发器实现不允许新增/删除表/增加/减少/修改字段类型 给本帖投票 56211打赏收藏 分享 转发到动态举报 写回复 性能测试中发现oracle11g数据库每天22点,oralce进程CPU占用率突增>> 11 条回复 切换为时间正序 请发表友善的回复… 发表回复 microsof…

C++ 第三讲

1 >手动封装一个顺序栈类(数据元素为整形)&#xff0c;要求私有成员属性:堆区空间的指针&#xff0c;用于存放数据&#xff0c;和一个指向栈顶元素的变量 main.cpp #include "zuoye.h"int main() {//实例化对象My_stack Stck;My_stack &st Stck;//入栈Stck…

数字图像学笔记 —— 19.肤色检测

文章目录 什么是肤色检测需要使用OpenCV函数颜色空间转换颜色范围位运算 什么是肤色检测 在没有AI之前&#xff0c;肤色检测是计算机视觉的一项常见任务。其根本思路是划定一个颜色区域&#xff0c;只要属于该颜色区域的像素就认为属于肤色。但是这种方法的精确度不高&#xf…

ubuntu中下载、构建、使用raylib

目录 先决条件 [1]下载raylib方式一方式二 构建 [1]使用终端中使用Clion中使用 先决条件 [1] ubuntu系统上需要先安装GCC, make(或者cmake)和git (下载raylib) 执行下面的命令可以安装GCC,make,cmake,git sudo apt install build-essential git #build-essential是一套工具集…

leetcode 445. Add Two Numbers II(两数相加)

用链表代表2个数字&#xff0c;这2个数字相加的和用链表返回。 最高位在链表的head. 思路&#xff1a; 1.链表逆序 数字相加是从低位到高位的&#xff0c;然而链表中的数字是从高位指向低位。 所以涉及到链表的逆序。 逆序之后只需从head到tail把两个链表的数字相加&#x…