Js简单学习

1.重构

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. 模板字符串

//普通字符串形式
const dnormalStr = "123";
const normalStr = '123';

//模板字符串
const temStr = `The book title is ${book.title},data:${book.publicationData.split("-")[0]}`;
console(temStr);

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

 3.三元运算符

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

4.箭头函数

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

 

5.短路运算符

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. 可选链

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

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

NaN产生的情况:

NaN = number + not number(like undefined);

 

7.map

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

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

9.reduce

const pagesAllBooks = data.reduce((acc, book) => (acc + book.pages, 0)) //3227


array.reduce((prev, cur, index, arr)=> {
    /***/
}, initialValue)

参数: 
 参数一: callback 函数(执行数组中每个值的函数,包含四个参数):

    prev 必需 (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    cur 必需(数组中当前被处理的元素)
    index 可选 (当前元素在数组中的索引)
    arr 可选 (调用 reduce 的数组)
参数二:initialValue 可选 (表示初始值,作为第一次调用 callback 的第一个参数。)

        提供初始值,cur 从数组第一项开始,若不提供初始值,则 cur 从第二项开始执行,对应的第一次 prev 是数组第一项的值 

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

10.sort 

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

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

11.数组操作 

1.添加数据

const newArr = [...books,newBook];

2.删除数据

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

3.更新数据

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 则返回聚合对象

相关推荐

  1. Js简单学习

    2024-04-27 19:40:03       35 阅读
  2. js json简单介绍

    2024-04-27 19:40:03       58 阅读
  3. js 学习

    2024-04-27 19:40:03       47 阅读
  4. HTTP 简介js

    2024-04-27 19:40:03       59 阅读
  5. js中严格模式简单介绍

    2024-04-27 19:40:03       53 阅读
  6. Node.js创建一个简单的服务器

    2024-04-27 19:40:03       65 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 19:40:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 19:40:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 19:40:03       87 阅读
  4. Python语言-面向对象

    2024-04-27 19:40:03       96 阅读

热门阅读

  1. mac上修改git的密码

    2024-04-27 19:40:03       32 阅读
  2. SpringBoot教程(十九) | SpringBoot集成knife4j

    2024-04-27 19:40:03       31 阅读
  3. k8s pod 绑核

    2024-04-27 19:40:03       28 阅读
  4. visual studio code安装Clicknium

    2024-04-27 19:40:03       33 阅读
  5. 前端开发学习笔记(二) : Vue3 常用指令和功能

    2024-04-27 19:40:03       40 阅读
  6. 富格林:可信方针实现安全盈利

    2024-04-27 19:40:03       40 阅读
  7. vue中nextTick函数和react类似实现

    2024-04-27 19:40:03       43 阅读
  8. mysql binlog 中的位点生成逻辑是什么?

    2024-04-27 19:40:03       38 阅读
  9. vue中 key 的原理

    2024-04-27 19:40:03       31 阅读