es6的一些技巧

1,强制要求参数

es6 有默认参数设置机制 ;允许在入参的括号里给参数赋予默认值 ;防止函数在调用时没有传参;

我们知道在js函数在入参的时候是入几个都可以的; 

这就给了我们发挥的空间,我们来强制要求参数必须有 ,否则就报错;

const required  = ()=>{ throw new Error("Missing parameter")}

const add=(a=required(),b=required())
=>a+b;
add(1,2);
add(1)

这样的话,如果少参数,那么控制台就会Uncaught Error: Missing parameter;达到强制输入参数的目的;

2,set 方法的妙用

  (1)使用set来实现数组去重;

我们都知道set只存储唯一值;

所以 这样 const arr=[1,2,3,3];

 const arr1 =Array.from(new Set(arr));

  或者这样

const arr=[1,2,3,3];
const arr1 =[...new Set(arr)];

使用Array.from 或者 ...都可以实现Set 到 数组的转换;

(2) 基于 以上去重操作那么我们就可以实现一些东西了;

Array.from 或者 ...都已经 使得set变为数组了 ,那么就可以使用一些原生的api 例如 forEach,some ,every,filter,map,reduce

数组方法;

例如

const arr=[1,2,3,3,4,4,5,6];
const arr1 =[...new Set(arr)].filter((item,index)=>item>3);


3,解构赋值

3.1 对象解构

3.1.1删除对象上不需要的属性

例如:

const obj={name:"xiaoming",age:20,skill:["coding","cooking","learning"],field:["football","fun"]};

const {name,age,...otherAttrbute}=obj;

这样我们 就可以拿到除了name,age的其他的属性,变相的删除了这俩属性; 其他的属性放在otherAttrbute对象中;

以备后用;

3.1.2 合并对象;

利用...运算符来做结构;

例如:

const obj1={name:"xiaoming",age:20,address:"hangzhou"};
const obj2={name:"lily",age:18,address:"shanghai"};
const obj3={name:"lucy",age:18,address:"beijing"};

const newObj={...obj1,...obj2,...obj3}; //{name: "lucy", age: 18, address: "beijing"}

这样就实现了对象的结构合并,注意:相同Key名 后面的对象覆盖前面;

3.1.3 在函数的参数中解构 入参的对象;

例如 :

const xiaohong={
address:"hangzhou",
age:20,
someAttrbute:{
face:"guaziface",
leg:"biglongleg",
}

}
const getSomeAttrbute=({address,someAttrbute:{face},someAttrbute})=>{
console.log(address,face,someAttrbute)
}
getSomeAttrbute(xiaohong);

这样的话就可以直接拿到 该对象的某些个属性;

3.2 数组解构

3.2.1  数值交换

例如:

let a=1;
let b=2;
[b,a]=[a,b]
console.log(a);//2
console.log(b);//1

这样就实现了值的互换;

3.2.2 接收函数返回的多个结果;

async function getFullPost(){
return await Promise.all([
fetch("/post"),
fetch("/comments")
])
};
cosnt [post,comments]=getFullPost();

这样getFullPost()函数调用会得到一个数组 ,我们就可以通过解构赋值直接拿到每个返回结果的数据,方便处理;

4 关于reduce的一些妙用 

首先声明 这是关于es5的方法 ,只是归并到这个文章了;

const arr=[1,2,3,4,5];
const result=arr.reduce((a,b)=>a+b);
console.log(result); //15

首先来说一下这个api的简单用法; 实现数组中的每一项相加 ,参数a是初始值, 或者计算结束后的返回值,b是当前元素; 这是简单用法 ,前方高能。

4.1.1  使用reduce同时实现map和filter

const nums=[10,20,30,40,50,60,70];
const result=nums.reduce((a,b)=>{
b=b*2;
if(b>50){
a.push(b);
}
return a
},[])
console.log(result);//[60, 80, 100, 120, 140]

这里后面是空数组是 可选参数 ,是指a的初始值;

这样一来实现了map方法,重新返回一个处理过的新的副本,

      二来实现了filter方法实现了过滤;

这样就可以实现替代map和filter的结果;

4.1.2  统计数组中相同项的个数;

var cars=["BWM","BENZ","BENZ","TESLA","BWM","TOYOTA"];
var result=cars.reduce((a,b)=>{
a[b]=a[b]?++a[b]:1;
return a;
},{});
console.log(result);//{BWM: 2, BENZ: 2, TESLA: 1, TOYOTA: 1}

这样就得到了数组中每个元素的数量;








基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值