[TOC] #### 1. slice --- **概述** slice 方法用于提取數(shù)組中的一部分,返回提取結(jié)果,不會(huì)改變?cè)瓟?shù)組 **語(yǔ)法** ```javascript array.slice(start, end) start 起始位置 end 可選參數(shù),結(jié)束位置 返回值: 起始位置到結(jié)束位置之間的數(shù)據(jù),包含起始位置,但是不包含結(jié)束位置 當(dāng)位置的值為負(fù)數(shù)時(shí),代表從倒數(shù)第幾個(gè)元素開始提取,如: -1 代表倒數(shù)第一個(gè)元素 ``` **實(shí)例** ```javascript const arr = ['what', 'are', 'you', 'doing', '?'] // ['are', 'you'] const res1 = arr.slice(1, 3) // ['are', 'you', 'doing'] const res2 = arr.slice(1, -1) ``` #### 2. splice --- **語(yǔ)法** ```javascript array.splice(index, howmany[, item1, item2, ...]) index 起始位置,從何處開始 howmany 刪除的元素?cái)?shù)量,為 0 時(shí)不會(huì)刪除任何元素 item1, item2, .. 可選參數(shù),要添加到數(shù)組中的新項(xiàng)目 返回值:被刪除元素構(gòu)建的新數(shù)組,沒(méi)有刪除時(shí)返回空數(shù)組 當(dāng)位置的值為負(fù)數(shù)時(shí),代表從倒數(shù)第幾個(gè)元素開始提取,如: -1 代表倒數(shù)第一個(gè)元素 ``` **實(shí)例** ```javascript const arr = ['what', 'are', 'you', 'doing', '?'] // ['are', 'you', 'doing'] const delArr = arr.splice(1, 3) // ['what', '?'] console.log(arr); ``` ```javascript const arr = ['what', 'are', 'you', 'doing', '?'] // [] const delArr = arr.splice(1, 0, 'ok', 'name') // ['what', 'ok', 'name', 'are', 'you', 'doing', '?'] console.log(arr); ``` ```javascript const arr = ['what', 'are', 'you', 'doing', '?'] // ['you'] const delArr = arr.splice(2, 1, 'ok') // ['what', 'are', 'ok', 'doing', '?'] console.log(arr); ``` **應(yīng)用場(chǎng)景** 現(xiàn)有物聯(lián)網(wǎng)設(shè)備每隔一段時(shí)間會(huì)向APP發(fā)送一些數(shù)據(jù),APP需要將數(shù)據(jù)臨時(shí)保存起來(lái),等待特定時(shí)機(jī)將這些數(shù)據(jù)一次性發(fā)送給服務(wù)端,保存這些數(shù)據(jù)時(shí)如果有相同的id,則后面的數(shù)據(jù)覆蓋前面的數(shù)據(jù) ```javascript // 緩存變量 const data = [] setInterval(() => { // 生成 1~5 之間的整數(shù) const id = Math.round(Math.random() * 4 + 1) const score = Math.round(Math.random() * 100) // 要存入緩存變量中的數(shù)據(jù) const user = { id, score } // 存入緩存變量 const index = data.findIndex(item => item.id == id) index === -1 ? data.push(user) : data.splice(index, 1, user); // 查看數(shù)據(jù) console.log(user); console.log(data); }, 3000) ``` #### 3. slice 和 splice 區(qū)別 --- slice() 方法用于從數(shù)組中選取元素,返回值是選取的元素,并且不會(huì)改變?cè)瓟?shù)組 splice() 方法用于在數(shù)組中添加和刪除元素,返回值是被刪除的元素,會(huì)改變?cè)瓟?shù)組