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