詳細(xì)學(xué)習(xí)請(qǐng)看:
vue數(shù)組操作方法
JavaScript Array 對(duì)象參考手冊(cè)
- 【使數(shù)組發(fā)生更新】方法:修改了原始數(shù)組错蝴,會(huì)觸發(fā)視圖更新
push() 洲愤、 pop()颓芭、shift()顷锰、unshift()、 splice() 亡问、sort()官紫、 reverse()塑径、 join() - 【返回新數(shù)組讨衣、替換數(shù)組】:不會(huì)變更原始數(shù)組,而總是返回一個(gè)新數(shù)組
filter()帜矾、concat() 床玻、 slice()毁涉、 map()
【 .filter() 】方法
filter創(chuàng)建一個(gè)新數(shù)組,新數(shù)組中的元素是符合指定條件的元素锈死。
filter方法不會(huì)改變?cè)瓟?shù)組贫堰,不對(duì)空數(shù)組進(jìn)行檢測(cè)。
舉例:
const arr= [32, 33, 16, 40];
const arr1 = arr.filter(item => item >= 18)
console.log(arr) // [32, 33, 16, 40]
console.log(arr1) // [32, 33, 40]
【 .map() 】方法
map() 方法返回一個(gè)新數(shù)組待牵,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值其屏。
map() 方法按照原始數(shù)組元素順序依次處理元素。
filter方法不會(huì)改變?cè)瓟?shù)組缨该,不對(duì)空數(shù)組進(jìn)行檢測(cè)偎行。
舉例:
const arr= [4, 9, 16, 25];
const arr1 = arr.map(item => item+2)
console.log(arr) // [4, 9, 16, 25]
console.log(arr1) // [6, 11, 18, 27]
【 .forEach() 】方法
forEach() 方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。
注意: forEach() 對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的蛤袒。
tips: forEach()中不支持使用break(報(bào)錯(cuò))和return(不能結(jié)束循環(huán))熄云,有需要時(shí)可使用常規(guī)的for循環(huán)。
const arr= [4, 9, 16, 25];
const arr1 = [];
arr.forEach(item => arr1.push(item))
console.log(arr) // [4, 9, 16, 25]
console.log(arr1) // [4, 9, 16, 25]
【 .concat() 】方法:合并數(shù)組
舉例:
// 數(shù)組直接和參數(shù)合并
const array = ['a','b','e'];
console.log(array.concat('h','i')); // "a", "b", "e", "h", "i"
// 2個(gè)數(shù)組合并
const array = ['a','b','e'];
const b = ['c','d']
console.log(array.concat(b)); // a b e c d
// 3個(gè)數(shù)組合并
const array = ['a','b','e'];
const b = ['c','d'];
const c = ['f','g'];
console.log(array.concat(c,b)); // "a", "b", "e", "f", "g", "c", "d"
【 .push() 】方法
push在數(shù)組的末尾增加一個(gè)元素妙真,一次可以增加多個(gè)
舉例:
const array = ['a','b','c'];
array.push('d');
console.log(array); // a b c d
array.push('e','f','g');
console.log(array); // a b c d e f g
【 .join() 】方法
join() 方法用于把數(shù)組中的所有元素放入一個(gè)字符串皱碘。
元素是通過(guò)指定的分隔符進(jìn)行分隔的。
const array = ['a','b','e'];
console.log(array.join('-')); // a-b-e
【 .pop() 】方法
pop在數(shù)組末尾刪除一個(gè)元素
舉例:
const array = ['a','b','c','d'];
array.pop();
console.log(array); // a b c
【 .shift() 】方法
shift刪除第一個(gè)元素
舉例:
const array = ['a','b','c','d'];
array.shift();
console.log(array); // b c d
【 .unshift() 】方法
unshift在數(shù)組頭部增加一個(gè)元素或者多個(gè)
舉例:
const array = ['c','d'];
array.unshift('b');
console.log(array); // b c d
array.unshift('e','a');
console.log(array); // e a b c d
【 .splice() 】方法:根據(jù)索引設(shè)置元素
splice刪除隐孽、插入或者替換元素癌椿。語(yǔ)法:this.arr.splice(index, num, value);
舉例:
// 刪除 index=1的1個(gè)元素
const array = ['a','b','c','d'];
array.splice(1, 1)
console.log(array); // a c d
// 插入 在index=1后插入e
const array = ['a','b','c','d'];
array.splice(1, 0, 'e')
console.log(array); // a e b c d
// 替換 index=1的1個(gè)元素
const array = ['a','b','c','d'];
array.splice(1, 1, 'e')
console.log(array); // a e c d
$set方法:刪除、插入或者替換元素菱阵。
語(yǔ)法:arr.$set(index, num, value);和splice() 一樣的語(yǔ)法踢俄。
【 .sort() 】方法
sort數(shù)組排序
舉例:
const array = ['a','c','b','d'];
array.sort();
console.log(array); // "a", "b", "c", "d"
【 .reverse() 】方法
reverse 數(shù)組反轉(zhuǎn)
舉例:
const array = ['a','c','b','d'];
array.reverse();
console.log(array); // "d", "b", "c", "a"
【 .slice() 】方法:可從已有的數(shù)組中返回選定的元素。
語(yǔ)法:arr.slice(start,end);
2個(gè)參數(shù)分別是:即要返回項(xiàng)的起始和結(jié)束位置晴及。
- 參數(shù):
start 必需都办。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù)虑稼,那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置琳钉。也就是說(shuō),-1 指最后一個(gè)元素蛛倦,-2 指倒數(shù)第二個(gè)元素歌懒,以此類(lèi)推。
end 可選溯壶。規(guī)定從何處結(jié)束選取及皂。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù)且改,那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素验烧。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素又跛。
- 返回值
返回一個(gè)新的數(shù)組碍拆,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。 - 說(shuō)明
請(qǐng)注意慨蓝,該方法并不會(huì)修改數(shù)組感混,而是返回一個(gè)子數(shù)組。
當(dāng)只給slice()傳遞一個(gè)參數(shù)時(shí)菌仁,該方法返回從該參數(shù)指定位置開(kāi)始到當(dāng)前數(shù)組末尾的所有項(xiàng)浩习。
舉例:
const array = ['a','b','c','d'];
console.log(array.slice(1,3)); // b c
console.log(array.slice(1)); // b c d
console.log(array.slice(-3)); // b c d
console.log(array.slice(-1)); // d
【 .find() 】方法
find返回符合要求的第一個(gè)數(shù)組元素,
find方法使用時(shí)济丘,數(shù)組中的每個(gè)元素都會(huì)執(zhí)行find中的函數(shù):
- 當(dāng)數(shù)組中的元素滿(mǎn)足函數(shù)條件時(shí)則返回true谱秽,find()返回符合要求的數(shù)組元素值洽蛀,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)。
- 當(dāng)數(shù)組元素沒(méi)有滿(mǎn)足find中的函數(shù)條件時(shí)疟赊,則返回undefined郊供。
注意:
- find() 對(duì)于空數(shù)組,函數(shù)是不會(huì)執(zhí)行的近哟。
- find() 并沒(méi)有改變數(shù)組的原始值驮审。
舉例:
const arr= [4, 9, 16, 25];
const b = arr.find(item => item>10)
const c = arr.find(item => item<1)
console.log(arr) // [4, 9, 16, 25]
console.log(b) // 16
console.log(c) // undefined
【 .findIndex() 】方法
findIndex返回符合函數(shù)條件的數(shù)組元素下標(biāo),空數(shù)組不會(huì)執(zhí)行吉执。
findIndex() 方法返回傳入一個(gè)測(cè)試條件(函數(shù))符合條件的數(shù)組第一個(gè)元素位置疯淫。
findIndex() 方法為數(shù)組中的每個(gè)元素都調(diào)用一次函數(shù)執(zhí)行:
- 當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回 true 時(shí), findIndex() 返回符合條件的元素的索引位置,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)戳玫。
- 如果沒(méi)有符合條件的元素返回 -1
注意:
- findIndex() 對(duì)于空數(shù)組熙掺,函數(shù)是不會(huì)執(zhí)行的。
- findIndex() 并沒(méi)有改變數(shù)組的原始值咕宿。
舉例:
const arr= [4, 9, 16, 25];
const b = arr.findIndex(item => item>10)
const c = arr.findIndex(item => item<1)
console.log(arr) // [4, 9, 16, 25]
console.log(b) // 2
console.log(c) // -1
【 .some() 】方法
some方法會(huì)檢測(cè)數(shù)組中的元素是否滿(mǎn)足指定條件(函數(shù)提供)币绩。
some() 方法會(huì)依次執(zhí)行數(shù)組的每個(gè)元素:
- 如果有一個(gè)元素滿(mǎn)足條件,則表達(dá)式返回true , 剩余的元素不會(huì)再執(zhí)行檢測(cè)府阀。
- 如果沒(méi)有滿(mǎn)足條件的元素缆镣,則返回false。
注意:
- some() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)试浙《埃空數(shù)組不會(huì)執(zhí)行。
- some() 不會(huì)改變?cè)紨?shù)組川队。
舉例:
const arr= [4, 9, 16, 25];
const b = arr.some(item => item>10)
const c = arr.some(item => item<1)
console.log(arr) // [4, 9, 16, 25]
console.log(b) // true
console.log(c) // false
【 .every() 】方法
every檢測(cè)數(shù)組中的元素是否都滿(mǎn)足條件力细,有一個(gè)不滿(mǎn)足條件的則返回false,空數(shù)組不會(huì)執(zhí)行固额。
every() 方法用于檢測(cè)數(shù)組所有元素是否都符合指定條件(通過(guò)函數(shù)提供)。
every() 方法使用指定函數(shù)檢測(cè)數(shù)組中的所有元素:
- 如果數(shù)組中檢測(cè)到有一個(gè)元素不滿(mǎn)足煞聪,則整個(gè)表達(dá)式返回 false 斗躏,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。
- 如果所有元素都滿(mǎn)足條件昔脯,則返回 true啄糙。
注意:
- every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)。
- every() 不會(huì)改變?cè)紨?shù)組云稚。
const arr= [4, 9, 16, 25];
const b = arr.every(item => item>10)
const c = arr.every(item => item>1)
console.log(arr) // [4, 9, 16, 25]
console.log(b) // false
console.log(c) // true