從一道阿里數(shù)組筆試題理解常用數(shù)組方法

這是阿里2017秋季校招前端的一道筆試選擇題:

將數(shù)組var a=[1,2,3] 變成數(shù)組 [4,3,2,1] 下面的方式正確的是:
A、a.reverse().unshift(4)
B、a.push(4).reverse()
C、a.push(4); a.reverse()
D、a.splice(3,1,4).reverse()

A選項(xiàng):a.reverse()后返回值即數(shù)組a變成[3,2,1],再使用unshift()方法在數(shù)組開(kāi)頭添加一個(gè)4,a數(shù)組就變成了[4,3,2,1]。注,unshift()返回新數(shù)組的長(zhǎng)度,此處為4。正確。

B選項(xiàng):push()方法返回新數(shù)組的長(zhǎng)度,是一個(gè)number類型,不是數(shù)組,所以不能再用“.”操作符繼續(xù)執(zhí)行reverse()方法,報(bào)錯(cuò)(Uncaught TypeError),錯(cuò)誤。

C選項(xiàng):push()方法返回新數(shù)組的長(zhǎng)度,是一個(gè)number類型,此時(shí)a.push(4)后返回4,但數(shù)組a已經(jīng)變成[1,2,3,4],再對(duì)a用“.”操作符繼續(xù)執(zhí)行reverse()方法,得到[4,3,2,1]。正確。

D選項(xiàng):splice()語(yǔ)法:arrayObject.splice(index,howmany,item1,.....,itemX)。參數(shù):index:必需整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。howmany:必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。item1, ..., itemX:可選。向數(shù)組添加的新項(xiàng)目。返回值:Array:包含被刪除項(xiàng)目的新數(shù)組,如果有的話。

由于a.splice(3,1,4)中的index為3,超過(guò)了數(shù)組a的下標(biāo),所以3后面的1也不會(huì)起作用。a.splice(3,1,4)會(huì)將4插入到數(shù)組a末尾。但splice()返回值是被刪除項(xiàng)目的新數(shù)組,由于a.splice(3,1,4)并沒(méi)有刪除元素,所以返回的新數(shù)組為空,對(duì)空數(shù)組reverse()還是空。(如果D選項(xiàng)改成a.splice(3,1,4);a.reverse()就正確了。錯(cuò)誤。

所以正確答案為:AC。

Array對(duì)象常用方法歸納:

不改變?cè)瓟?shù)組:

1、 concat()
連接兩個(gè)或多個(gè)數(shù)組
不改變?cè)瓟?shù)組
返回被連接數(shù)組的一個(gè)副本

var a = [1, 2, 3];
var b = [4, 5];
a.concat(b);   // [1, 2, 3, 4, 5]
a   // [1,2,3]

2、join()
把數(shù)組中所有元素放入一個(gè)字符串
不改變?cè)瓟?shù)組
返回字符串

var a = [1, 2, 3];
a.join(',');  // "1,2,3"
a  // [1,2,3]

3、 slice()
從已有的數(shù)組中返回選定的元素
不改變?cè)瓟?shù)組
返回一個(gè)新數(shù)組

var a = [1, 2, 3];
a.slice(1,2);  // [2]
a  // [1,2,3]

4、 toString()
把數(shù)組轉(zhuǎn)為字符串
不改變?cè)瓟?shù)組
返回?cái)?shù)組的字符串形式

var a = [1, 2, 3];
a.toString();  // “1,2,3”
a  // [1,2,3]
改變?cè)瓟?shù)組:

5、 pop()
刪除數(shù)組最后一個(gè)元素,如果數(shù)組為空,則不改變數(shù)組,返回undefined
改變?cè)瓟?shù)組
返回被刪除的元素

var a = [1, 2, 3];
a.pop();  // 3
a  // [1,2]

6、 push()
向數(shù)組末尾添加一個(gè)或多個(gè)元素
改變?cè)瓟?shù)組
返回新數(shù)組的長(zhǎng)度

var a = [1, 2, 3];
a.push(4);  // 4
a  // [1,2,3,4]

7、 reverse()
顛倒數(shù)組中元素的順序
改變?cè)瓟?shù)組
返回該數(shù)組

var a = [1, 2, 3];
a.reverse();  // [3,2,1]
a  // [3,2,1]

8、 shift()
把數(shù)組的第一個(gè)元素刪除,若空數(shù)組,不進(jìn)行任何操作,返回undefined
改變?cè)瓟?shù)組
返回第一個(gè)元素的值

var a = [1, 2, 3];
a.shift();  // 1
a  // [2,3]

9、 sort()
對(duì)數(shù)組元素進(jìn)行排序(ascii)
改變?cè)瓟?shù)組
返回該數(shù)組

var a = [1, 3, 2];
a.sort();  // [1,2,3]
a  // [1,2,3]

10、 splice()
從數(shù)組中添加/刪除項(xiàng)目
改變?cè)瓟?shù)組
返回被刪除的元素

var a = [1, 2, 3];
a.splice(2,1,4);  // [3]
a  // [1,2,4]

11、 unshift()
向數(shù)組的開(kāi)頭添加一個(gè)或多個(gè)元素
改變?cè)瓟?shù)組
返回新數(shù)組的長(zhǎng)度

var a = [1, 2, 3];
a.unshift(4);  // 4
a  // [4,1,2,3]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容