Js简单学习

server/2024/9/23 12:44:40/

1.重构

javascript">function getBook () {return data
}function getBookById (id) {return data.find(e => e.id === id)
}const book = getBookById(1)//重构获取对象中成员属性
const { id, title, genres } = book
console(id, title);//重构获取数组中值,other获取剩下的所有值
const { primaryGenre, secondaryGenre, ...otherGenres } = genres
console(primaryGenre, secondaryGenre, otherGenres)//重构添加新的属性生成新的对象,这里将book所有属性导入,同时添加了一个movie属性
const newBook = { ...book, moviePublicationData: "2001-12-19" }
console(newBook);

可以通过重构对对象或者数组进行操作,在使用时可以将其中数据取出.

2. 模板字符串

javascript">//普通字符串形式
const dnormalStr = "123";
const normalStr = '123';//模板字符串
const temStr = `The book title is ${book.title},data:${book.publicationData.split("-")[0]}`;
console(temStr);

使用占位符嵌入字符串或者值,同时可以嵌入js。

 3.三元运算符

javascript">//三元运算符
const temStr = `The book title is ${title},data:${publicationData.split("-")[0]},
The book has ${hasMovieAdaptation ? "" : "not"} been adapted as a movie`

4.箭头函数

javascript">//箭头函数
const addData1 = () => console(book)
const addData2 = () => {console(book)
}

 

5.短路运算符

javascript">console.log(true && "OK")  //"OK"
console.log(false && "Fa")  //"false"
console.log(false || "Fa") //"Fa"//当其中链路出现undefined时会产生报错,或者当为0时输出应该为0,而不应该是没有数据
const spanishTranslation = book.translations.spanish || "NOT TRANSLATION"//??(空凝聚运算符)检查当前值是否为undefined或者null则抛出NO DATA
const countWrong = book.reviews.librarything.reviewsCount ?? "NO DATA"

js中的与或运算符还是挺有意思的,可以对值的输出进行控制,不要再写if。

6. 可选链

javascript">//当lib没有数据时不会抛出异常,同时??检查当前值是否为undefined或者null则直接为0
const countWrong = book.reviews.librarything?.reviewsCount ?? 0

在链路尾部加上?,当该对象为undefined或者null时不会抛出异常,而会直接返回undefined。

NaN产生的情况:

NaN = number + not number(like undefined);

 

7.map

javascript">const x = [1, 2, 3, 4, 5].map(e => e * 2) //2,4,6,8,10
const titleArr = data.map(book => book.title) //Mein Kampf,The Cyberiad...//返回聚合对象
const essentialData = data.map(book => {return {title: book.title,author: book.author}
}
)

感觉跟forEach一样,循环遍历元素,暂时没发现其他功能.

8.filter

javascript">//返回聚合对象
const essentialData = data.filter(book => book.pages > 500) //过滤页小于500的数据
.map(book => {return {title: book.title,author: book.author}
}
)

9.reduce

javascript">const pagesAllBooks = data.reduce((acc, book) => (acc + book.pages, 0)) //3227array.reduce((prev, cur, index, arr)=> {/***/
}, initialValue)参数: 参数一: callback 函数(执行数组中每个值的函数,包含四个参数):prev 必需 (上一次调用回调返回的值,或者是提供的初始值(initialValue))cur 必需(数组中当前被处理的元素)index 可选 (当前元素在数组中的索引)arr 可选 (调用 reduce 的数组)
参数二:initialValue 可选 (表示初始值,作为第一次调用 callback 的第一个参数。)提供初始值,cur 从数组第一项开始,若不提供初始值,则 cur 从第二项开始执行,对应的第一次 prev 是数组第一项的值 

 reduce 为数组中的每一个元素依次执行回调函数,接受四个参数:初始值 0(initialValue)或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组。

10.sort 

javascript">const sortArr = oldArr.slice().sort((a,b) => a - b); //默认从小到大

 排序。。。,排序过后原数组会改变,如不希望改变需要调用.slice()先copy一个arr。

11.数组操作 

1.添加数据

javascript">const newArr = [...books,newBook];

2.删除数据

javascript">const newArr = oldArr.shift(); //删除数组中第一个元素
const newArr = oldArr.slice(1); //从1下标开始提取
const newArr = oldArr.filter(e => e !== 3); //删除指定元素

3.更新数据

javascript">const newArr = oldArr.map(e => e.id === 1?{}:e) //如果id = 1 则返回null对象
const newArr = oldArr.map(e => e.id === 3?{...e,dance:true}:e) //如果id = 3 则返回聚合对象


http://www.ppmy.cn/server/20099.html

相关文章

FTP可替代?传输替代方案应该需要具备哪些条件?

企业对数据传输的安全性、速度和稳定性的要求日益提高。传统的FTP虽然在早期广泛使用,但随着技术的发展和业务需求的增长,其局限性逐渐显现,迫切需要替代方案以满足现代企业的需求。 FTP的局限性主要表现在以下几个方面: 安全性不…

计算机网络复习(应用层)

一、概述 1、应用层对应用程序的通信提供服务 2、应用层协议定义了如下内容: 报文类型是请求还是响应各种报文类型语法字段的定义时序 3、应用层功能: 文件传输、访问管理 电子邮件 虚拟终端 查询服务和远程作业登录 二、网络服务模型 1、C/S模…

ROS机器人实战,对标古月老师HRMRP机器人(一)——机器人总体方案设计

咳咳!这个是自己的毕业设计,内容比较多就拆开发。设计实现了一款SLAM移动机器人,加机械臂完成视觉识别抓取的,同时还有语音识别控制、QT上位机控制、Web网页控制。前几年看古月老师的视频,看到古月老师设计的HRMRP&…

安装VMware后的相关配置

一、创建完虚拟机后 看看虚拟机设置里面的DVD;有没有自动检测到 二、打开虚拟机后 一直点击继续3、完成后进行重新下载VM——tools 来进行跨机子的复制粘贴,和屏幕大小的自适应注意:如果安装不了tools是灰色的 点开虚拟机设置——两个光盘都选用物理驱…

内容分发网络CDN分布式部署加速原理

哈喽,大家好,淼淼又来和大家见面啦,大家应该也知道,在应用开发市场中,软件产品的内测阶段对于确保产品质量与市场接受度至关重要,但是传统的内测分发方式往往面临地域分布广泛、网络环境各异的挑战&#xf…

力扣56. 合并区间

题目链接 力扣56. 合并区间 思路 合并 先对每个区间进行排序,左端点值小的放在前面。然后对这些区间进行合并,对于一个的结果集合,如果本区间与前一个区间不重叠,则创建一个新区间加入到这个集合中;否则取这两个区…

React真的好难用

我发现React就像个宗教一样,网络上总有一群信徒。信徒:React天下第一,谁也不能说他不好。 网络上大佬对React的评价一般有几类: React跟Vue比就是手动档和自动档的区别,高手都开手动档。—— 就一个破打工的&#xf…

西湖大学赵世钰老师【强化学习的数学原理】学习笔记2节

强化学习的数学原理是由西湖大学赵世钰老师带来的关于RL理论方面的详细课程,本课程深入浅出地介绍了RL的基础原理,前置技能只需要基础的编程能力、概率论以及一部分的高等数学,你听完之后会在大脑里面清晰的勾勒出RL公式推导链条中的每一个部…