js常用数组字符串方法整理

tips: 在js中基本涉及到区间的都是包头不包尾,如果是删除操作返回值一般为删除内容,关于查找的方法有一定的区别注意使用情况,另外一些可以配合正则表达式的方法也要留意

Array实例的所有方法

在这里插入图片描述

concat

concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

arrayObject.concat(arrayX,arrayX,......,arrayX)

返回值

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

every

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供),every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true。
  • 注意: every() 不会对空数组进行检测。
  • 注意: every() 不会改变原始数组。

参数:

  • function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
    • currentValue 必须。当前元素的值
    • index 可选。当前元素的索引值
    • arr 可选。当前元素属于的数组对象
  • thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
    如果省略了 thisValue ,“this” 的值为 “undefined”
array.every(function(currentValue,index,arr), thisValue)

filter

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

  • 注意: filter() 不会对空数组进行检测。
  • 注意: filter() 不会改变原始数组。
array.filter(function(currentValue,index,arr), thisValue) //函数为逻辑

find

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值,find() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined
  • 注意: find() 对于空数组,函数是不会执行的。
  • 注意: find() 并没有改变数组的原始值。
array.find(function(currentValue, index, arr),thisValue)

flat

flat()方法返回一个扁平化之后的数组,参数为降低维数,如果参数为Infinity 会直接扁平化为一维数组。

array.flat(Infinity);

forEach

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

  • 注意: forEach() 对于空数组是不会执行回调函数的。
  • 注意: forEach() 的遍历是不能打断的。
array.forEach(function(currentValue, index, arr), thisValue)

includes

includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

参数:

  • searchvalue 必需,要查找的字符串。
  • start 可选,设置从那个位置开始查找,默认为 0。
arr.includes(searchElement)
arr.includes(searchElement, start)

indexOf

indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

如果在数组中没找到指定元素则返回 -1。

提示如果你想查找字符串最后出现的位置,请使用 lastIndexOf() 方法。

参数:

  • item 必须。查找的元素。
  • start 可选的整数参数。规定在数组中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
array.indexOf(item,start)

join

join() 方法用于把数组中的所有元素转换一个字符串(返回一个字符串)。元素是通过指定的分隔符进行分隔的。

参数:

  • separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
array.join(separator)

map

map() 方法是ES6遍历数组的新方法,返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。

  • 注意: map() 不会对空数组进行检测。
  • 注意: map() 不会改变原始数组。

参数:

  • function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数

    • currentValue 必须。当前元素的值
    • index 可选。当前元素的索引值
    • arr 可选。当前元素属于的数组对象
  • thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。

array.map(function(currentValue,index,arr), thisValue)

push pop shift unshift

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
pop() 方法用于删除并返回数组的最后一个元素。
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

arrayObject.push(newelement1,newelement2,....,newelementX)
arrayObject.pop(newelement1,newelement2,....,newelementX)
arrayObject.shift(newelement1,newelement2,....,newelementX)
arrayObject.unshift(newelement1,newelement2,....,newelementX)

reduce(简单的说: 归并)

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终返回值为计算的结果。reduce() 可以作为一个高阶函数,用于函数的 compose。

  • 注意: reduce() 对于空数组是不会执行回调函数的。

参数:

  • function(total,currentValue, index,arr) 必需。用于执行每个数组元素的函数。

    • total 必需。初始值, 或者计算结束后的返回值。
    • currentValue 必需。当前元素
    • currentIndex 可选。当前元素的索引
    • arr 可选。当前元素所属的数组对象。
  • initialValue 可选。传递给函数的初始值

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

reverse

reverse() 方法用于颠倒数组中元素的顺序。

arrayObject.reverse()

slice

slice() 方法可从已有的数组中返回选定的元素。

slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

注意: slice() 方法不会改变原始数组。

参数:

  • start 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
  • end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
array.slice(start, end)

some

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。some() 方法会依次执行数组的每个元素:

  • 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
  • 如果没有满足条件的元素,则返回false。
  • 注意: some() 不会对空数组进行检测。
  • 注意: some() 不会改变原始数组。

参数:

  • function(currentValue, index,arr) 必须。函数,数组中的每个元素都会执行这个函数
    • currentValue 必须。当前元素的值
    • index 可选。当前元素的索引值
    • arr 可选。当前元素属于的数组对象
  • thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
    如果省略了 thisValue ,“this” 的值为 “undefined”
array.some(function(currentValue,index,arr),thisValue)

sort(排序方法之一)

sort() 方法用于对数组的元素进行排序。

排序顺序可以是字母或数字,并按升序或降序。

默认排序顺序为按字母升序。

注意:当数字是按字母顺序排列时"40"将排在"5"前面。

使用数字排序,你必须通过一个函数作为参数来调用。

函数指定数字是按照升序还是降序排列。

  • 注意: 这种方法会改变原始数组!。

参数:

  • sortfunction 可选。规定排序顺序。必须是函数。
array.sort(sortfunction)

splice

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。如果从 array 中删除了元素,则返回的是含有被删除的元素的数组。

参数:

  • index 必需。规定从何处添加/删除元素。
    该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
  • howmany 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。
    如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
  • item1, …, itemX 可选。要添加到数组的新元素
array.splice(index,howmany,item1,.....,itemX)

补充数组的静态方法 isArray

isArray() 方法用于判断一个对象是否为数组。如果对象是数组返回 true,否则返回 false。

Array.isArray(obj)

String实例的所有方法

在这里插入图片描述
在这里插入图片描述

charAt

charAt() 方法可返回指定位置的字符。参数为下标

string.charAt(index)

concat

同 Array

includes

includes() 方法用于判断字符串是否包含指定的子字符串。

如果找到匹配的字符串则返回 true,否则返回 false。

  • 注意: includes() 方法区分大小写。
  • 注意: 返回值为boolean类型

参数:

  • searchvalue 必需,要查找的字符串。
  • start 可选,设置从那个位置开始查找,默认为 0。
string.includes(searchvalue, start)

indexOf

查找字符串,searchvalue参数必填,fromindex选填,从第几位开始查找

stringObject.indexOf(searchvalue,fromindex)

match(只能配合正则使用)

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

  • 注意: match() 方法将检索字符串 String Object,以找到一个或多个与 regexp 匹配的文本。这个方法的行为在很大程度上有赖于 regexp 是否具有标志 g。如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。

参数:

  • regexp 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
string.match(regexp)

replace(可以配合正则使用)

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

参数:

  • regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。
    请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

  • replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数

stringObject.replace(regexp/substr,replacement)

search(查找,可配合正则使用)

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。返回与指定查找的字符串或者正则表达式相匹配的 String 对象起始位置,如果没有找到任何匹配的子串,则返回 -1。

参数:

  • searchvalue 必须。查找的字符串或者正则表达式。
string.search(searchvalue)

slice

slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。

start 参数字符串中第一个字符位置为 0, 第二个字符位置为 1, 以此类推,如果是负数表示从尾部截取多少个字符串,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。

end 参数如果为负数,-1 指字符串的最后一个字符的位置,-2 指倒数第二个字符,以此类推。

参数:

  • start 必须。 要抽取的片断的起始下标,第一个字符位置为 0。如果为负数,则从尾部开始截取。
  • end 可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素
string.slice(start,end)

split(切割字符串返回新数组)

split() 方法用于把一个字符串分割成字符串数组。

  • 提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

  • 注意: split() 方法不改变原始字符串。

参数:

  • separator 可选。字符串或正则表达式,从该参数指定的地方分割 string Object。
  • limit 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
string.split(separator,limit)

substr

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符

参数:

  • start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
  • length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

返回值:

  • 一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
stringObject.substr(start,length)

substring

substring() 方法用于提取字符串中介于两个指定下标之间的字符。substring() 方法返回一个新字符串包括 开始 处的字符,但不包括 结束 处的字符。

参数:

  • from 必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。
  • to 可选。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。
    如果省略该参数,那么返回的子串会一直到字符串的结尾。
string.substring(from, to)

toLowerCase和toUpperCase

转换字符串大小写

stringObject.toLowerCase(str)
stringObject.toUpperCase(str)

trim(清除字符串首尾空格)

trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。

trim() 方法不会改变原始字符串。

trim() 方法不适用于 null, undefined, Number 类型。

string.trim()
函数对比

函数适用返回值
indexOf判断得到下标,没有该值返回-1
includes判断返回布尔值,存在为true,不存在为false
filter逻辑返回一些值,遍历数组,过滤所有符合条件的数据,并返回
find逻辑返回一个值,查找第一个符合条件的值并返回该值
some逻辑返回布尔值,符合条件返回true,否则false

总结:

  • 如果是判断一个值是否存在,使用indexOf或者includes。

  • 如果是需要比较两个值,根据想要返回的结果来选择函数。如上后三。

11/02补充

很多时候容易遗忘哪些方法会修改原数组

  • 1.pop() 删除 数组 最后一个元素;
  • 2.shift() 删除 数组 第一个元素;
  • 3.push() 数组 最后 添加 一个元素;
  • 4.unshift() 数组 开头 添加 一个元素;
  • 5.sort() 数组 排序
  • 6.splice() 数组 删除 替换 插入元素
  • 7.reverse() 数组 反转
  • .forEach() 遍历会修改原数组 注意:字符串的.replace() 方法不会改变调用它的字符串

补充3个对象常用的遍历方法 Object.keys(),Object.values(),Object.entries()

  • (1)Object.keys() // 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。
  • (2)Object.keys() // 返回数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。
  • (3)该Object.entries()方法返回给定对象自己的可枚举字符串键属性 [key, value]对的数组。这与使用for…in循环进行迭代相同,除了 for…in循环还会枚举原型链中的属性。返回的数组顺序与循环Object.entries()提供的顺序相同for…in。如果需要不同的排序,则应首先对数组进行排序,例如 Object.entries(obj).sort((a, b) => b[0].localeCompare(a[0]));.

注:这些方法返回的数组会对值进行排序,如果你不希望进行排序就选择其他的遍历方式,如果你想更加深入的了解移步MDN

Object.entries详解MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaxLoongLvs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值