JavaScript面试考点之数组、字符串和Object的常用方
1、JavaScript数组的常用方法
我们可以把数组的基本操作方法归纳为增、删、改、查。
1)增:push ()、unshift ()、slice ()、splice ()、contact ()
push () 方法是接收任意数量的参数,并将其添加到数组的末尾,返回值为该数组的最新长度。会影响原始数组。
unshift () 方法是接收任意数量的参数,并将其添加到数组的开头,返回值为该数组的最新长度。会影响原始数组。
slice (start,end) 方法可从已有的数组中返回选定的元素。将所有从索引 start 到 end(不包括 end)的数组项复制到一个新的数组,所以不会影响原始数组。可传入可选参数起始位置start(数组片断开始处的数组下标,包含开始索引。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素))、结束位置end(数组片断结束处的数组下标,不包含结束索引。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取)。
splice(start,删除元素个数,添加元素1,元素2) 方法可以用于删除数组中的指定元素。使用splice()会影响到原数组,会将指定元素从原数组中删除,并将被删除的元素作为返回值返回。传入三个参数,分别是开始位置、0(要删除的元素数量)、插入的元素,返回空数组。
concat()方法会创建一个当前数组的副本,然后再把它的参数添加到副本末尾,最后返回这个新构建的数组,不会影响原始数组。
2)删:pop()、shift()、splice()、slice()
pop() 方法用于删除数组的最后一项,同时减少数组的length值,返回被删除的项。
shift() 方法用于删除数组的第一项,同时减少数组的length值,返回被删除的项。
splice() 方法需要传入两个参数,分别为开始位置,删除元素数量,返回包含删除元素的数组。
slice() 方法用于创建一个包含原有数组中一个或多个元素的新数组,不会影响原始数组。
3)改:splice()、map() 、reduce()
splice() 方法需要传入三个参数,分别是开始位置,要删除元素的数量,要插入的任意多个元素,返回删除元素的数组,对原数组产生影响。
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 不会对空数组进行检测,不会改变原始数组。
function(currentValue, index,arr)执行函数(必选)。currentValue必须。当前元素的值;index可选。当前元素的索引值;arr可选。当前元素属于的数组对象
thisValue对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
function(total,currentValue, index,arr)用于执行每个数组元素的函数(必选)。
total必需。初始值, 或者计算结束后的返回值。
currentValue必需。当前元素。
currentIndex可选。当前元素的索引。
arr可选。当前元素所属的数组对象。
initialValue可选。传递给函数的初始值。
4)查:indexOf() 、includes() 、find()、filter()、every()
indexOf() 返回要查找的元素在数组中的第一个索引位置,如果没找到则返回-1。
a、element是要在数组中检查的元素(必填)。
b、fromIndex是要从数组中搜索元素的启始索引或位置(可选)。
includes() 返回要查找的元素在数组中的位置,找到返回true,否则false。
a、valueToFind是要在数组中检查的值(必填);
b、fromIndex是要开始从中搜索元素的数组中的索引或位置(可选)。
注意:includes和indexOf方法都使用严格的相等性('===')搜索数组。如果值的类型不同(例如4和'4'),它们将分别返回false和-1。
find() 返回第一个匹配的元素。如果数组中没有项目符合条件,则返回undefined。
callback是在数组中的每个值上执行的函数,带有三个参数:
a、element-当前被遍历的元素(必填)
b、index-当前遍历的元素的索引/位置(可选)
c、array- 当前数组(可选)
Array.filter()方法在数组中查找满足特定条件的所有元素。返回的新数组,如果数组中没有项目符合条件,则返回一个空数组。
a、newArray是返回的新数组。
b、array 是我们要进行查找的数组本身。
c、callback 是应用于数组每个元素的回调函数。
every() 方法用于检测数组所有元素是否都符合指定条件。如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。 every() 不会对空数组进行检测。every() 不会改变原始数组。
总结:
如果你想找到在符合特定条件的阵列中的所有项目,使用filter。
如果你想检查是否至少有一个项目符合特定的条件,请使用find。
如果你想检查一个数组包含一个特定的值,请使用includes。
如果要在数组中查找特定项目的索引,请使用indexOf。
5)排序方法:reverse() 、sort()
reverse() 方法用于颠倒数组中元素的顺序。
sort()方法接受一个比较函数,用于判断哪个值应该排在前面。
6)转换方法:join()
join() 方法接收一个参数,即字符串分隔符,返回包含所有项的字符串。
7)迭代方法:some()、every()、forEach()、filter()、map()
some() 方法对数组每一项都运行传入的函数,如果有一项函数返回 true ,则这个方法返回 true
every() 方法对数组每一项都运行传入的函数,如果每一项函数都返回 true ,则这个方法返回 true
forEach() 方法对数组每一项都运行传入的函数执行某项操作,没有返回值。foreach()不能使用break和continue。它实现break效果可以通过抛出异常的方式,实现continue的效果可以直接使用return。
filter() 方法对数组每一项都运行传入的函数,过滤函数返回 true 的项,并组成数组之后返回。
map() 方法对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。一个和原数组长度相等的数组。
题目1:查找指定元素在数组中的个数?
a、用 filter 返回删除的数组
b、用 map 循环,判断条件,变量++
c、用 reduce 返回累积值
题目2:计算数组中每个元素出现的次数
a、使用reduce方法
b、使用map统计
2、Javscript字符串的常用方法
1)增
除了常用的+以及${}进行字符串拼接之外,还可以通过contact()方法用于讲一个或多个字符串拼接成一个新字符串。
2)删:substr()、slice()、substring()
string.substr(start,length) 方法可在字符串中抽取从 开始下标开始的指定数目的字符。length子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。使用 start(包含) 和 end(不包含)参数来指定字符串提取的部分。
substring(from, to) 方法用于提取字符串中介于两个指定下标之间的字符。返回的子串包括开始处的字符,但不包括结束 处的字符。
3)改:不改变原有字符串,创建一个字符串副本
trim()、trimLeft()、trimRight() 方法用于删除前、后或前后所有空格符。
repeat() 方法表示将字符串复制多少次,然后返回。接受一个整数参数。
toLowerCase()、toUpperCase()方法用于大小写转换。
4)查:charAt()、indexOf()、startWith()、includes()
charAt() 方法返回给定索引位置的字符。需传入一个整数参数。
indexOf() 方法返回某个字符在字符串中的位置。需传入一个字符。
startWith() 方法返回一个布尔值,判断字符串是否以传入的字符开头。
includes() 方法返回一个布尔值,判断字符串是否包含传入的字符。
5)转换方法:split()
split() 方法把字符串按照指定的分隔符,返回一个数组。
6)匹配方法:match()、search()、replace()
match() 方法接受一个参数(正则表达式字符串或者正则表达式对象)。返回是一个数组。
search() 方法接受一个参数(正则表达式字符串或者正则表达式对象)。返回是布尔值。
replace() 方法接受两个参数,第一个是匹配的内容,第二个是替换的元素。替换的是第一次匹配到的。
如何去除字符串中的最后一个字符?
有三种方法: str.slice(0,str.length-1)、substr(0,length-1)、str.substring(0,str.length-1)
js 获取字符串最后一个字符?
有三种:str.charAt(str.length-1)、str.substr(str.length-1,1)、 str.substring(str.length-1) 、str.slice(str.length-1)、let res = str.split("");res[str.length - 1]。
1)slice(start,end)
start : 要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。
end:要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
2)substr(start,length)
start : 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。
length : 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
3)substring(start,stop)
与 slice() 和 substr() 方法不同的是,substring() 不接受负的参数
start : 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置
stop : 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。
js字符串拼接有哪些方法
1)使用 + 运算符;
2)使用concat()方法;
3)使用 join 方法。
3、Object的常用方法
1)Object.values():返回一个对象属性值的数组。
2)Object.keys():返回一个对象属性名的数组。
3)Object.entries():创建一个数组,其中包含一个对象的键/值对数组。
4)Object.is():相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0,Object.is就是用来解决这个问题,与“===”基本一致。
5)Object.assign() 浅拷贝:用于对象的合并。
6)Object spread (对象展开):展开一个对象,允许向一个对象添加新的属性和值。
4、伪数组怎么转数组
伪数组:无法调用数组的方法,但是有length属性,又可以索引获取内部项的数据结构。
假设这里有个伪数组:fakeArr。
1)for循环,把类数组的每一项都push到真正的数字arr1中
2)使用数组的方法slice
slice() 方法用于创建一个包含原有数组中一个或多个元素的新数组。使用call或者apply指向伪数组。