我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么快速入门JavaScript

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么快速入门JavaScript

这篇文章主要讲解了“怎么快速入门JavaScript”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么快速入门JavaScript”吧!

arrayGcd

Calculates the greatest common denominator (gcd) of an array of numbers.

Use Array.reduce() and the gcd formula (uses recursion) to calculate the  greatest common denominator of an array of numbers.

const arrayGcd = arr =>{   const gcd = (x, y) => !y ? x : gcd(y, x % y);   return arr.reduce((a,b) => gcd(a,b)); } // arrayGcd([1,2,3,4,5]) -> 1 // arrayGcd([4,8,12]) -> 4

计算数组的***公约数。

使用 Array.reduce() 和 gcd 公式(使用递归)来计算一个数组的***公约数。

➜  code cat arrayGcd.js const arrayGcd = arr => {     const gcd = (x, y) => !y ? x : gcd(y, x % y);     return arr.reduce((a, b) => gcd(a, b)); }  console.log(arrayGcd([1, 2, 3, 4, 5])); console.log(arrayGcd([4, 8, 12])); ➜  code node arrayGcd.js 1 4

gcd 即欧几里德算法,具体不表,自查。这里用到了数组的reduce方法,相当简洁,reduce不太了解的话,看下 mdn 就明白。

arrayLcm

Calculates the lowest common multiple (lcm) of an array of numbers.

Use Array.reduce() and the lcm formula (uses recursion) to calculate the  lowest common multiple of an array of numbers.

const arrayLcm = arr =>{  const gcd = (x, y) => !y ? x : gcd(y, x % y);  const lcm = (x, y) => (x*y)/gcd(x, y)   return arr.reduce((a,b) => lcm(a,b)); } // arrayLcm([1,2,3,4,5]) -> 60 // arrayLcm([4,8,12]) -> 24

计算一个数组的最小公倍数。

使用 Array.reduce() 和 lcm 公式(使用递归)来计算一个数组的***公约数。

➜  code cat arrayLcm.js const arrayLcm = arr => {   const gcd = (x, y) => (!y ? x : gcd(y, x % y));   const lcm = (x, y) => x * y / gcd(x, y);   return arr.reduce((a, b) => lcm(a, b)); };  console.log(arrayLcm([1, 2, 3, 4, 5])); console.log(arrayLcm([4, 8, 12])); ➜  code node arrayLcm.js 60 24

lcm 算法用到了前面的 gcd 算法,关键点是两个数的***公约数和最小公倍数的乘积正好就是这两个数的乘积。

arrayMax

Returns the maximum value in an array.

Use Math.max() combined with the spread operator ( ... ) to get the maximum  value in the array.

const arrayMax = arr => Math.max(...arr); // arrayMax([10, 1, 5]) -> 10

返回数组中***的值。

使用 Math.max() 和 ES6 的扩展运算符 … 返回数组中***的值。

➜  code cat arrayMax.js const arrayMax = arr => Math.max(...arr);  console.log(arrayMax([10, 1, 5])); ➜  code node arrayMax.js 10

实际上就是 Math.max() 干的事,没啥可说的了。

arrayMin

Returns the minimum value in an array.

Use Math.min() combined with the spread operator ( ... ) to get the minimum  value in the array.

const arrayMin = arr => Math.min(...arr); // arrayMin([10, 1, 5]) -> 1

返回数组中最小的值。

使用 Math.min() 和 ES6 的扩展运算符 … 返回数组中最小的值。

➜  code cat arrayMin.js const arrayMin = arr => Math.min(...arr);  console.log(arrayMin([10, 1, 5])); ➜  code node arrayMin.js 1

实际上就是 Math.min() 干的事,没啥可说的了。

chunk

Chunks an array into smaller arrays of a specified size.

Use Array.from() to create a new array, that fits the number of chunks that  will be produced. Use Array.slice() to map each element of the new array to a  chunk the length of size . If the original array can't be split evenly, the  final chunk will contain the remaining elements.

const chunk = (arr, size) =>  Array.from({length: Math.ceil(arr.length / size)}, (v, i) => arr.slice(i * size, i * size + size)); // chunk([1,2,3,4,5], 2) -> [[1,2],[3,4],[5]]

按照给定的 size 将一个数组切分成含有 size 个数的更小数组块的数组。

使用 Array.from() 生产新的符合定义的数组。使用 Array.slice() 来截取指定 size 个元素组成新的数组块。如果原数组长度不能被  size 整除,***的剩余的那些元素将归属于***一个块。

➜  code cat chunk.js const chunk = (arr, size) =>   Array.from({ length: Math.ceil(arr.length / size) }, (v, i) =>     arr.slice(i * size, i * size + size)   );  console.log(chunk([1, 2, 3, 4, 5], 2)); ➜  code node chunk.js [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ]

Array.from(arrayLike, mapFn, thisArg)  这个方法呢,***个参数是一个类数组或者可迭代的对象,第二个参数是一个应用在每一个数组元素上的方法,第三个参数就是改变 this  的指向了。通俗说就是指定谁是你的爸爸。

这里用了一个 { length: Math.ceil(arr.length / size) } 迭代对象, length 指定了迭代次数,即按照 size  分块后的数组长度,正好就是原数组长度除以 size  向上取整的值。向上取整就是为了满足不能完全整除的情况。比如5个元素按照2个一组进行分块,分了两组两个元素的,剩***一个元素成了独立组,总长为3。

(v, i) ,由于迭代的时候数组在每一个位置上都是以 undefined 初始化的,所以 v 一直都是 undefined 。

arr.slice(i * size, i * size + size) 迭代过程中每次截取 size 个数的元素组成新数组。这里的 i  就是随着迭代变化,比如 length 是3, i 就是0,1,2。

这里的迭代类似 python 里的 range 。

➜  code python Python 3.6.4 (default, Dec 23 2017, 10:37:40) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import math >>> arr = [1,2,3,4,5] >>> size = 2 >>> for i in range(math.ceil(len(arr) / size)): ...     print('index: ', i) ... index:  0 index:  1 index:  2

compact

Removes falsey values from an array.

Use Array.filter() to filter out falsey values ( false , null , 0 , "" ,  undefined , and NaN ).

const compact = arr => arr.filter(Boolean); // compact([0, 1, false, 2, '', 3, 'a', 'e'*23, NaN, 's', 34]) -> [ 1, 2, 3,

移除掉数组里 falsey 的元素。(这个 falsey 不太好翻译,不是错误的意思,而是该值布尔运算值为 false 的意思,我个人常用 !!  进行判断)。

使用 Array.filter() 把 false 、 null 、 0 、 "" 、 undefined 和 NaN 这些 falsey  过滤掉。

➜  code cat compact.js const compact = arr => arr.filter(Boolean);  console.log(compact([0, 1, false, 2, "", 3, "a", "e" * 23, NaN, "s", 34])); ➜  code node compact.js [ 1, 2, 3, 'a', 's', 34 ]

Array.prototype.filter() 干的,没啥好说。

countOccurrences

Counts the occurrences of a value in an array.

Use Array.reduce() to increment a counter each time you encounter the  specific value inside the array.

const countOccurrences = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0); // countOccurrences([1,1,2,1,2,3], 1) -> 3

统计一个元素在一个数组中出现的次数。

使用 Array.reduce() 在遍历过程中如果指定元素在数组中出现,则增加它的次数值,默认次数为0。

➜  code cat countOccurrences.js const countOccurrences = (arr, value) =>   arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0);  console.log(countOccurrences([1, 1, 2, 1, 2, 3], 1)); console.log(countOccurrences([1, 1, 2, 1, 2, 3], 5)); ➜  code node countOccurrences.js 3 0

三元运算符 (v === value ? a + 1 : a + 0) 遍历过程中判断遍历数组值 v 是否严格等于指定值 value ,是,次数 a+1  ;否, a+0 。

***的一个逗号后面的0,是这个初始值,即 a=0 ,这个懂 reduce  方法都知道,特别指出是,因为这个函数一定会有返回值,如果指定元素没有在数组中出现一次,返回值是 0 ,所以必须得初始化为 0 。

deepFlatten

Deep flattens an array.

Use recursion. Use Array.concat() with an empty array ( [] ) and the spread  operator ( ... ) to flatten an array. Recursively flatten each element that is  an array.

const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v)); // deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5]

深度摊平一个数组。

使用递归方法。结合 Array.concat() 、空数组 [] 和 ES6 的扩展运算符 …  来摊平一个数组,如果摊平的元素还是一个数组,就再递归运用该方法。

➜  code cat deepFlatten.js const deepFlatten = arr =>   [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));  console.log(deepFlatten([1, [2], [[3], 4], 5])); ➜  code node deepFlatten.js [ 1, 2, 3, 4, 5 ]

三元运算符 (Array.isArray(v) ? deepFlatten(v) : v) 判断 v 是否是一个数组,是,返回递归运用  deepFlatten(v) 后的值;否,直接返回 v 。

[].concat(...arr.map(fn)) 用空数组把 map 运算产生的数组进行 … 扩展运算值拼接成结果数组返回。

该方法是深度摊平方法,在很多时候还有特定的摊平一层的需求, underscore 就有。实现的方法就是再加一个标志参数进行处理即可。具体不讲了。

感谢各位的阅读,以上就是“怎么快速入门JavaScript”的内容了,经过本文的学习后,相信大家对怎么快速入门JavaScript这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么快速入门JavaScript

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx怎么快速入门

本文小编为大家详细介绍“Nginx怎么快速入门”,内容详细,步骤清晰,细节处理妥当,希望这篇“Nginx怎么快速入门”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Nginx 是一款面向性能设计的 HTTP 服务器
2023-06-28

怎么快速入门Java编程

本篇内容主要讲解“怎么快速入门Java编程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么快速入门Java编程”吧!  自学Java编程的好处是时间自由、经济消耗低,但存在的主要问题是你无法确
2023-06-02

python 快速入门

导入#from dir1 import test#import dir1.test as test列表推到:b3 =[x for x in xing if x in ming]print(b3) li = [1, 2, 3, 4][elem
2023-01-31

Python3快速入门

Python3快速入门Python3快速入门(一)——Python简介https://blog.51cto.com/9291927/2385592Python3快速入门(二)——Python3基础https://blog.51cto.com
2023-01-31

JDBC快速入门

JDBC快速入门 详解1.0DriverManager功能1   功能22.0 connection对象 3.0 statement对象  4.0 ResultSet遍历结果集的一个案例 import java.sql.*;public class DQLte
JDBC快速入门
2020-11-18

怎么快速入门轻量快速的CI工具Drone

怎么快速入门轻量快速的CI工具Drone,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言公司之前一直在使用 Jenkins 作为 CI/CD 工具, Jenkins 非常强大
2023-06-19

零基础怎么快速入门Python

这篇文章主要讲解了“零基础怎么快速入门Python”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“零基础怎么快速入门Python”吧!1、Python 介绍学习一门新的语言之前,首先简单了解下
2023-06-02

Oracle快速入门_day01

公司目前项目使用到了Oracle数据库 本人之前接触不多 计划4天 将Oracle数据库 快速入门 并结合开发使用,Oracle与MySql语法相似度很高,要一起学的小伙伴压力不要太大Oracle数据库简介Oracle Database,又名Oracle RD
Oracle快速入门_day01
2016-05-18

FastAPI--快速入门(1)

FastAPI 是一个高性能 Web 框架,用于构建 API。主要特性:快速:非常高的性能,与 NodeJS 和 Go 相当快速编码:将功能开发速度提高约 200% 至 300%更少的错误:减少约 40% 的人为错误直观:强大的编辑器支持,
2023-01-31

SendPkt快速入门[Python]

SendPkt快速入门作者:gashero电邮:harry.python@gmail.com原文地址:http://gashero.yeax.com/?p=26项目主页:http://sendpkt.googlecode.com日期:200
2023-01-31

python3.x 快速入门

Edit the > 2018/6/15 11:26:53 1认识Python人生苦短,我用python - 优雅,明确,简单 是python设计哲学 - python的设计目标之一, 是让代码具备高度的可阅读性 - python 被广泛用
2023-01-31

用JavaScript测试入门:快速开始指南

本文将介绍如何使用JavaScript进行测试,并提供一个快速入门指南。
用JavaScript测试入门:快速开始指南
2024-02-08

编程热搜

目录