代码编织梦想

数组常用方法

push()

尾部追加,类似于压栈,原数组会变
在这里插入图片描述

pop()

尾部弹出,类似出栈,原数组会变。

在这里插入图片描述数组的push()和pop()可以模拟常见的数据结构之一:栈
在这里插入图片描述

unshift()

在头部压入数据,类似于入队,原数组会变。
在这里插入图片描述

shift()

在头部弹出数据,原数组会变。
在这里插入图片描述
数组的push和shift可以模拟常见的数据结构之一:队列
在这里插入图片描述

concat()

concat会在当前数组尾部拼接传入的数组,然后返回一个新的数组原数组不变

在这里插入图片描述

indexOf()

在数组中寻找该值,找到则返回其下标,找不到则返回-1。
在这里插入图片描述

includes()

在数组中寻找该值,找到则返回true,找不到则返回false。
在这里插入图片描述

join()

将数组转化成字符串,并返回该字符串,不传值则默认逗号隔开原数组不变。

在这里插入图片描述

reverse()

翻转原数组,并返回已完成翻转的数组,原数组改变
在这里插入图片描述

slice(start, end)

start开始截取到end,但是不包括end,原数组不改变。
在这里插入图片描述

splice(start, deleteCount,item1,item2…)

start参数开始的位置
deleteCount要截取的个数
后面items为要添加的元素
如果deleteCount为0,则表示不删除元素,从start位置开始添加后面的几个元素到原始的数组里面。
返回值为由被删除元素组成的一个数组。如果没删除元素,则返回空数组。
这个方法改变了原数组,数组的长度会发生变化。
在这里插入图片描述

sort()

对数组的元素进行排序,并返回数组。
默认排序顺序是在将元素转换为字符串,然后比较他们的UTF-16代码单元值序列时构建的。

改变了原数组
在这里插入图片描述

字符串常用方法

charAt()

返回指定索引位置处的字符。
类似数组中用中括号获取对应下标位置的数据。
在这里插入图片描述

concat()

类似数组的concat(),用来返回一个合并拼接两个或两个以上字符串。
原字符串不变。
在这里插入图片描述

indexOf()、lastIndexOf()

indexOf,返回一个字符在字符串中首次出现的位置,lastIndexOf返回一个字符在字符串中最后一次出现的位置。

在这里插入图片描述

slice()

提取字符串的片段,并把提取的字符串作为新的字符串返回出来。
原字符串不变。
在这里插入图片描述

split()

使用指定的分隔符将一个字符串拆分为多个子字符串数组并返回,原字符串不变
在这里插入图片描述

substr(),substring()

  • 这两个方法的功能都是截取一个字符串的片段,并返回截取的字符串。
  • substr和substring这两个方法不同的地方就在于参数二,substr的参数二是截取返回出来的这个字符串指定的长度,substring的参数二是截取返回这个字符串的结束点,并且不包含这个结束点。而它们的参数一,都是一样的功能,截取的起始位置。
  • 注意事项:substr的参数二如果为0或者负数,则返回一个空字符串,如果未填入,则会截取到字符串的结尾去。substring的参数一和参数二为NAN或者负数,那么它将被替换为0。
    在这里插入图片描述

match()

match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,并返回一个包含该搜索结果的数组。
在这里插入图片描述注意事项:如果match方法没有找到匹配,将返回null。如果找到匹配,则 match方法会把匹配到以数组形式返回,如果正则规则未设置全局修饰符g,则 match方法返回的数组有两个特性:input和index。input属性包含整个被搜索的字符串。index属性包含了在整个被搜索字符串中匹配的子字符串的位置。

replace()

replace接收两个参数,参数一是需要替换掉的字符或者一个正则的匹配规则,参数二,需要替换进去的字符,仔实际的原理当中,参数二,你可以换成一个回调函数
在这里插入图片描述

search()

在目标字符串中搜索与正则规则相匹配的字符,搜索到,则返回第一个匹配项在目标字符串当中的位置,没有搜索到则返回一个-1。
在这里插入图片描述

toLowerCase(),toUpperCase()

toLowerCase把字母转换成小写,toUpperCase()则是把字母转换成大写。
在这里插入图片描述

includes(), startsWith(), endsWith()

includesstartsWithendsWith,es6的新增方法,includes 用来检测目标字符串对象是否包含某个字符,返回一个布尔值,startsWith用来检测当前字符是否是目标字符串的起始部分,相对的endwith是用来检测是否是目标字符串的结尾部分。

const str = "can i help you?"
console.log(str.includes('i')) //true
console.log(str.startWith('can')) // true
console.log(str.endWith('?')) // true

repeat()

返回一个新的字符串对象,新字符串等于重复了指定次数的原始字符串。接收一个参数,就是指定重复的次数。原字符串不变
在这里插入图片描述

常用的遍历方法&高阶函数

for()

最常用的for循环,经常用的数组遍历,也可以遍历字符串。
在这里插入图片描述

while() / do while()

while、do while主要的功能是,当满足while后边所跟的条件时,来执行相关业务。这两个的区别是,while会先判断是否满足条件,然后再去执行花括号里面的任务,而do while则是先执行一次花括号中的任务,再去执行while条件,判断下次还是否再去执行do里面的操作。也就是说 do while至少会执行一次操作。

while(条件){
     执行...
}
------------
do{
    执行...
}
while(条件)

forEach()

拷贝一份遍历原数组。

return无法终止循环。不过可以起到continue效果。
本身是不支持的continue与break语句的我们可以通过some和 every来实现。

在这里插入图片描述

for…in

  • for…in 是 ES5 标准, 此方法遍历数组效率低,主要是用来循环遍历对象的属性。
  • 遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0",“1”,"2"等是字符串。
  • Object.defineProperty,建立的属性,默认不可枚举。

在这里插入图片描述

for…of

  • for…of是ES6新增的方法,但是for…of不能去遍历普通的对象,for…of的好处是可以使用break跳出循环。

  • for-of这个方法避开了for-in循环的所有缺陷

  • 与forEach()不同的是,它可以正确响应break、continue和return语句

  • for-of循环不仅支持数组,还支持大多数类数组对象,例如DOM NodeList对象。

  • for-of循环也支持字符串遍历

在这里插入图片描述

面试官:说一下 for…in 和 for…of 区别?

  • (1)for…in 用于可枚举数据,如对象、数组、字符串
  • (2)for…of 用于可迭代数据,如数组、字符串、Map、Set

every/some

返回一个布尔值。当我们需要判定数组中的元素是否都满足某些条件时,可以使用every / some。这两个的区别是,every会去遍历判断是否数组中的每一项都满足条件,遇到不满足的直接停止遍历返回false,而 some则是当某一项满足条件时停止遍历,返回true。
在这里插入图片描述

在这里插入图片描述

filter()

filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。
它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。
该方法不会改变原数组。

在这里插入图片描述

map()

map即是 “映射”的意思 ,原数组被“映射”成对应新数组。
map:支持return,相当与原数组克隆了一份,把克隆的每项改变了,也不影响原数组。

在这里插入图片描述

reduece()/reduceRight()

reduce 从左到右将数组元素做“叠加”处理,返回一个值。reduceRight 从右到左。
在这里插入图片描述

Object.keys遍历对象的属性

Object.keys方法的参数是一个对象,返回一个数组。该数组的成员都是该对象自身的(而不是继承的)所有属性名,且只返回可枚举的属性。
在这里插入图片描述

Object.getOwnPropertyNames() 遍历对象的属性

Object.getOwnPropertyNames方法与Object.keys类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。但它能返回不可枚举的属性。
在这里插入图片描述
以上遍历方法的区别:

一:map(),forEach(),filter()循环的共同之处:
  1.forEach,map,filter循环中途是无法停止的,总是会将所有成员遍历完。
  2.他们都可以接受第二个参数,用来绑定回调函数内部的 this 变量,将回调函数内部的 this 对象,指向第二个参数,间接操作这个参数(一般是数组)。

二:map()、filter()循环和forEach()循环的不同:
   forEach 循环没有返回值; map,filter 循环有返回值。

三:map()和filter()都会跳过空位,forwhile 不会

四:some()和every():
   some()只要有一个是true,便返回true;而every()只要有一个是false,便返回false.

五:reduce(),reduceRight():
   reduce是从左到右处理(从第一个成员到最后一个成员),reduceRight则是从右到左(从最后一个成员到第一个成员)。

六:Object对象的两个遍历 Object.keys 与 Object.getOwnPropertyNames:
   他们都是遍历对象的属性,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。但Object.keys不能返回不可枚举的属性;Object.getOwnPropertyNames能返回不可枚举的属性。

常用正则表达式

这里罗列一些我在刷算法题中遇到的正则表达式,如果有时间可认真学一下正则

1.判断字符

由26个英文字母组成的字符串:^[A-Za-z]+$
由26个大写英文字母组成的字符串:^[A-Z]+$
由26个小写英文字母组成的字符串:^[a-z]+$
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

判断数字

数字:^[0-9]*$

数学知识

1.质数

若一个正整数无法被除了1 和它自身之外的任何自然数整除,则称该数为质数(或素数),否则称该正整数为合数。

function judgePrime(n) {
    for (let i = 2; i * i <= n; i++) {
        if (n % i == 0) return false
    }
    return true
}

2.斐波那契数列

function Fibonacci(n) {
    if (n <= 1) return n  
    return Fibonacci(n - 1) + Fibonacci(n - 2)
}

参考文章:前端算法入门一:刷算法题常用的JS基础扫盲

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45732235/article/details/127168699

javascript常用算法-爱代码爱编程

经常会在CSDN上看一些文章,但还没有过发表文章,这是我分享的第一篇文章,想了下就分享JavaScript一些常用的算法,互相学习!!! 1.冒泡排序 冒泡排序,很多程序员一入门必定会接触到,原理:从小到大排序的情况下,从数组第一个数开始,跟第二个比较,大的数放在第二个,依次类推第二个跟第三个数进行比较一直到最后一个,得出数组的最后一个数为

js中的for in 和 for of 的区别_阳光下的冷静的博客-爱代码爱编程_js for of

for...in和for...of的区别 [ ]for...in是ES5的标准,该方法遍历的是对象的属性名称(key:键名)。一个Array对象也是一个对象,数组中的每个元素的索引被视为属性名称,所以在使用for...in

javascript实现八大经典算法_w_siya的博客-爱代码爱编程_javascript的算法

javaScript实现八大经典算法 冒泡排序选择排序插入排序希尔排序归并排序快速排序堆排序计数排序 冒泡排序 冒泡排序算法的运作如下:(从后往前) 1.比较相邻的元素。如果第一个比第二个大,就交换他们

Javascript常见算法总结(持续更新)-爱代码爱编程

1、用JS手写快速排序 快排三步曲: (1)在数据集之中,选择一个元素作为“基准”(pivot)。(2)所有小于“基准”的元素,都移到“基准”的左边;所有大于“基准”的元素,都移到“基准”的右边。(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 var arr = [55, 66, 18, 10, 20,

js中数组和字符串常用api总结-爱代码爱编程

一、数组Array 1. Array构造函数方法 Array.from 常用指数:两颗星从类似数组或迭代器对象中构造函数,包括dom元素数组、集合Set、字典Map、arguments等等。 Array.isArray(arr) 判断arr是否为数组,返回布尔值。2. 原地修改数组方法 这些方法不会返回新数组 五颗星 (1) arr.push()

JavaScript数据结构和算法-爱代码爱编程

01-线性数据结构之数组 线性数据结构:也叫一维数据结构,线性的数据结构强调存储和顺序,常用的有数组和链表两种线性数据结构。 特性 存储在物理空间上是连续的;数组定长,底层的数组长度是不可变的;数组的变量,指向了数组第一个元素的位置;优点 查询性能好缺点 因为数组存储的空间必须得是连续的,所以如果数组比较大,当系统的空间碎片较多的时候,容易存不下

JavaScript高级 面向对象、正则表达式-爱代码爱编程

JavaScript高级 面向对象、正则表达式 学习目标: 理解面向对象开发思想掌握 JavaScript 面向对象开发相关模式掌握在 JavaScript 中使用正则表达式typora-copy-images-to media JavaScript 高级 目标 理解面向对象开发思想掌握 JavaScript 面向对象开发相关模式掌握在 Ja

前端与移动开发----JS高级----函数全解,深拷贝浅拷贝,正则表达式-爱代码爱编程

JS高级03 回顾 构造函数 大写开头的函数, 需要配合new使用, 一般用作模板 new的作用 new触发构造函数执行改变构造函数内this的指向为实例对象向实例对象身上绑定属性和值自动返回实例对象到new调用处 实例成员就是绑定在this实例对象上的属性和方法 静态成员就是绑定在构造函数身上的属性和方法(谁绑定谁调用) prototy

js常用数组字符串方法整理-爱代码爱编程

tips: 在js中基本涉及到区间的都是包头不包尾,如果是删除操作返回值一般为删除内容,关于查找的方法有一定的区别注意使用情况,另外一些可以配合正则表达式的方法也要留意 Array实例的所有方法 concat concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 arrayObject.co

JS中常用的方法总结(算法,js编程题必备)-爱代码爱编程

总结这些方法的初衷呢是自己在做js编程题练的时候,发现对于JavaScript的许多方法 包括ES6中的方法不熟练,所以呢需要 去mdn中查找方法这样非常耽误,就自己总结一下js常用的方法 按照数据类型进行分类,有错误的地方欢迎大佬指导!! 1、数学方法:Math Math本身就是一个对象, 不需要在通过构造函数去创建, 该对象中集合了很多关

JavaScript高级教程(函数进阶、闭包、正则表达式、ES6新增语法、新增扩展方法)-爱代码爱编程

目录 函数的定义与调用 严格模式 什么是严格模式 开启严格模式 严格模式中的变化 高阶函数 闭包 正则表达式 ES6新增语法 ES6的内置对象扩展 Array的扩展方法 String的扩展方法 Set数据结构 函数的定义与调用 函数有三种定义方式: 自定义函数(命名函数)function fn() {}; 函数表达式(匿名

JavaScript 正则表达式的 5 个方法-爱代码爱编程

介绍一些 JavaScript 中的编写正则表达式的常见用法。 1. match() match() 与字符串一起使用以检查字符串和正则表达式 regex 之间的匹配,以正则表达式为参数。 语法: str.match(regex); 方法返回 3 个可能的值: 如果正则表达式包含一个 g 标记,即为全局匹配,它将返回一个包含所有匹配项的数组,没捕获

Python3进阶--正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、datetime-爱代码爱编程

第一章 变量、常用循环体、代码结构、代码练习 第二章 列表、元组等数据结构、字符串驻留机制及字符串格式化操作 第三章 函数、面向对象、文件操作、深浅拷贝、模块、异常及捕获 第四章 项目打包、类和对象高级、序列、迭代器、生成器、装饰器 第五章 正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、date

【JS】数组方法、字符串方法、遍历方法、高阶函数、正则表达式-爱代码爱编程

一、数组常用方法 1.push() 在尾部追加,类似于压栈,原数组会变。 const arr = [1, 2, 3] arr.push(8) console.log(arr) // [1, 2, 3, 8] 2.pop() 在尾部弹出,类似于出栈,原数组会变。数组的 push & pop 可以模拟常见数据结构之一:栈。 const

函数的定义方式 箭头函数 严格模式 闭包 正则表达式-爱代码爱编程

函数的定义方式 函数声明方式function关键字(命名函数)函数表达式(匿名函数)new Function() var fn = new Function('参数1','参数2','函数体') function里面参数都必须是字符串格式第三种方式执行效率低,不方便书写所有函数都是Function的实例(对象)函数也属于对象 函数内的this指向