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指向伪数组

3)使用原型继承

4)ES6的 ...扩展运算符

5) ES6中数组的Array.from方法

使用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容