您好,登錄后才能下訂單哦!
小編給大家分享一下JavaScript關(guān)于數(shù)組的方法有哪些區(qū)別,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
在JavaScript里,有很多新增,移除,替換數(shù)組元素的方法,很多方法都能實(shí)現(xiàn)同一個(gè)功能,但是他們卻有很大的不同之處,今天我們就來(lái)對(duì)比一下,JavaScript里的數(shù)組方法到底有什么奧秘。
在JavaScript 提供了多種新增,移除,替換數(shù)組元素的方法,但是有些會(huì)影響原來(lái)的數(shù)組;有些則不會(huì),它是新建了一個(gè)數(shù)組。
注意:區(qū)分以下兩個(gè)方法的不同點(diǎn):
array.splice() 影響原來(lái)的數(shù)組
array.slice() 不影響原來(lái)的數(shù)組
I. 新增:影響原數(shù)組
使用 array.push() 和 array.ushift() 新增元素會(huì)影響原來(lái)的數(shù)組。
let mutatingAdd = ['a', 'b', 'c', 'd', 'e']; mutatingAdd.push('f'); // ['a', 'b', 'c', 'd', 'e', 'f'] mutatingAdd.unshift('z'); // ['z', 'b', 'c', 'd', 'e' 'f']
II. 新增:不影響原數(shù)組
兩種方式新增元素不會(huì)影響原數(shù)組,第一種是 array.concat() 。
const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = arr1.concat('f'); // ['a', 'b', 'c', 'd', 'e', 'f'] (注:原文有誤,我做了修改 “.” ---> “,”) console.log(arr1); // ['a', 'b', 'c', 'd', 'e']
第二種方法是使用 JavaScript 的展開(kāi)(spread)操作符,展開(kāi)操作符是三個(gè)點(diǎn)(…)
const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = [...arr1, 'f']; // ['a', 'b', 'c', 'd', 'e', 'f'] const arr3 = ['z', ...arr1]; // ['z', 'a', 'b', 'c', 'd', 'e']
展開(kāi)操作符會(huì)復(fù)制原來(lái)的數(shù)組,從原數(shù)組取出所有元素,然后存入新的環(huán)境。
III. 移除:影響原數(shù)組
使用 array.pop() 和 array.shift() 移除數(shù)組元素時(shí),會(huì)影響原來(lái)的數(shù)組。
let mutatingRemove = ['a', 'b', 'c', 'd', 'e']; mutatingRemove.pop(); // ['a', 'b', 'c', 'd'] mutatingRemove.shift(); // ['b', 'c', 'd']
array.pop() 和 array.shift() 返回被移除的元素,你可以通過(guò)一個(gè)變量獲取被移除的元素。
let mutatingRemove = ['a', 'b', 'c', 'd', 'e']; const returnedValue1 = mutatingRemove.pop(); console.log(mutatingRemove); // ['a', 'b', 'c', 'd'] console.log(returnedValue1); // 'e' const returnedValue2 = mutatingRemove.shift(); console.log(mutatingRemove); // ['b', 'c', 'd'] console.log(returnedValue2); // 'a'
array.splice() 也可以刪除數(shù)組的元素。
let mutatingRemove = ['a', 'b', 'c', 'd', 'e']; mutatingRemove.splice(0, 2); // ['c', 'd', 'e']
像 array.pop() 和 array.shift() 一樣,array.splice() 同樣返回移除的元素。
let mutatingRemove = ['a', 'b', 'c', 'd', 'e']; let returnedItems = mutatingRemove.splice(0, 2); console.log(mutatingRemove); // ['c', 'd', 'e'] console.log(returnedItems) // ['a', 'b']
IV. 移除:不影響原數(shù)組
JavaScript 的 array.filter() 方法基于原數(shù)組創(chuàng)建一個(gè)新數(shù)組,新數(shù)組僅包含匹配特定條件的元素。 const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = arr1.filter(a => a !== 'e'); // ['a', 'b', 'c', 'd'](注:原文有誤,我做了修改) // 或者 const arr2 = arr1.filter(a => { return a !== 'e'; }); // ['a', 'b', 'c', 'd'](注:原文有誤,我做了修改)
以上代碼的條件是“不等于 ‘e’ ”,因此新數(shù)組(arr2)里面沒(méi)有包含 ‘e’。
箭頭函數(shù)的獨(dú)特性:
單行箭頭函數(shù),’return’ 關(guān)鍵字是默認(rèn)自帶的,不需要手動(dòng)書(shū)寫(xiě)。
可是,多行箭頭函數(shù)就需要明確地返回一個(gè)值。
另一種不影響原數(shù)組的方式是 array.slice()(不要與 array.splice() 混淆)。
const arr1 = ['a', 'b', 'c', 'd', 'e']; const arr2 = arr1.slice(1, 5) // ['b', 'c', 'd', 'e'] const arr3 = arr1.slice(2) // ['c', 'd', 'e']
V. 替換:影響原數(shù)組
如果知道替換哪一個(gè)元素,可以使用 array.splice() 。
let mutatingReplace = ['a', 'b', 'c', 'd', 'e']; mutatingReplace.splice(2, 1, 30); // ['a', 'b', 30, 'd', 'e'] // 或者 mutatingReplace.splice(2, 1, 30, 31); // ['a', 'b', 30, 31, 'd', 'e']
VI. 替換:不影響原數(shù)組
可以使用 array.map() 創(chuàng)建一個(gè)新數(shù)組,并且可以檢查每一個(gè)元素,根據(jù)特定的條件替換它們。
const arr1 = ['a', 'b', 'c', 'd', 'e'] const arr2 = arr1.map(item => { if(item === 'c') { item = 'CAT'; } return item; }); // ['a', 'b', 'CAT', 'd', 'e']
使用 array.map() 轉(zhuǎn)換數(shù)據(jù)
array.map() 是個(gè)強(qiáng)力方法,可以用于轉(zhuǎn)換數(shù)據(jù),而不污染原先的數(shù)據(jù)源。
const origArr = ['a', 'b', 'c', 'd', 'e']; const transformedArr = origArr.map(n => n + 'Hi!'); // ['aHi!', 'bHi!', 'cHi!', 'dHi!', 'eHi!'] console.log(origArr); // ['a', 'b', 'c', 'd', 'e']; // 原數(shù)組毫發(fā)無(wú)損
看完了這篇文章,相信你對(duì)JavaScript關(guān)于數(shù)組的方法有哪些區(qū)別有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。