IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
一、類數(shù)組
類數(shù)組不是數(shù)組,類數(shù)組指擁有l(wèi)ength屬性,其它屬性(索引)為非負(fù)整數(shù)(對(duì)象中的索引會(huì)被當(dāng)做字 符串來(lái)處理且不具有數(shù)組所具有的方法;
如函數(shù)中的arguments:
- let arg = null;
- function fun(a,b,c,d){
- arg = arguments;
- }
- fun(1,2,3,4)
- console.log(arg); //Arguments(4) [1, 2, 3, 4, callee: ƒ ,
- Symbol(Symbol.iterator): ƒ]
- arg.slice() //ncaught TypeError: Cannot read property 'slice' of null
類數(shù)組轉(zhuǎn)換為數(shù)組主要有一下方法:
1.Array.prototype.slice.call()
- Array.prototype.slice.call(arg) // [1, 2, 3, 4]
- Array.prototype.slice.call(arg).indexOf() //-1
2.Array.from()
- Array.from(arg) //[1, 2, 3, 4]
- Array.from(arg).indexOf() //-1
3. ...擴(kuò)展運(yùn)算符
- [...arg] //[1, 2, 3, 4]
- [...arg].indexOf() //-1
4.concat+apply
- Array.prototype.concat.apply([], arg) //[1, 2, 3, 4]
- Array.prototype.concat.apply([], arg).indexOf() //-1
二、數(shù)組遍歷API
1.map
map不修改原數(shù)組,根據(jù)傳入的函數(shù),映射出一個(gè)全新的數(shù)組
- let arr = [1 ,2 ,3];
- let res = arr.map((value)=>{
- return value + 1;
- })
- console.log(res) //[2, 3, 4]
2.foreach
遍歷數(shù)組,不可中斷,沒(méi)有返回值
- let arr = [1 ,2 ,3];
- arr.forEach((value)=>{
- console.log(value) //分別打印1,2,3
- });
3.some
遍歷數(shù)組,檢查是否有符合條件的數(shù)據(jù),至少有一個(gè)則返回true ,一個(gè)都沒(méi)有返回false
- let arr = [1 ,2 ,3];
- let res = arr.some((value)=>{
- return value > 2
- });
- console.log(res) //true
- let arr = [1 ,2 ,3];
- let res = arr.some((value)=>{
- return value > 3
- });
- console.log(res) //false
4.every
遍歷數(shù)組,檢查是否所有數(shù)據(jù)都符合條件,是則true ,否則false
- let arr = [1 ,2 ,3];
- let res = arr.every((value)=>{
- return value > 0
- });
- console.log(res) //true
- let arr = [1 ,2 ,3];
- let res = arr.every((value)=>{
- return value > 1
- });
- console.log(res) //false
5.reduce
reduce()方法接收一個(gè)回調(diào)函數(shù)作為第一個(gè)參數(shù),回調(diào)函數(shù)又接受四個(gè)參數(shù),分別是;
1、 previousValue =>初始值或上一次回調(diào)函數(shù)疊加的值;
2、 currentValue => 本次回調(diào)(循環(huán))將要執(zhí)行的值;
3、 index=>“currentValue”的索引值;
4、 arr => 數(shù)組本身;
reduce()方法返回的是最后一次調(diào)用回調(diào)函數(shù)的返回值;
- let arr = [1 ,2 ,3];
- let res = arr.reduce((sum, value)=>{
- return sum + value;
- });
- console.log(res) //6
6.find
返回符合條件的數(shù)據(jù)內(nèi)容
- let arr = [
- {id:1, {id:2, {id:3,value:3},
- value:4},
- value:5},
- ];
- let res = arr.find((current)=>{
- return current.value > 4;
- });
- console.log(res) //{id: 3, value: 5}
7.filter
顧名思義,過(guò)濾,按照傳入的規(guī)則過(guò)濾不符合條件的數(shù)據(jù),將符合條件的數(shù)據(jù)放入一個(gè)新數(shù)組
- let arr = [
- value:3},
- value:4},
- value:5},
- ];
- let res = arr.filter((current)=>{
- return current.value > 3;
- });
- console.log(res) //[{id:2, value:4}, {id:3, value:5}]
三、多維數(shù)組扁平化
以下以這段數(shù)據(jù)為例:
let arr = [1, [2, 3], [[4, 5, 6], 7, 8]]
1.flat
es6的flat ,但是一次只能拆分一層
- arr.flat() //[1, 2, 3, [4, 5, 6], 7, 8]
2.正則表達(dá)式
在字符串中匹配到'['或者']' ,將其去除,但是這樣做會(huì)將所有的數(shù)組元素變?yōu)樽址愋停覕?shù)組元素中 還不能包含'['或者']'
- <P>JSON.stringify(arr).replace(/(\[|\])/g,</P>
- <P>"5", "6", "7", "8"]'').split(',')//["1", "2", "3", "4",</P>
3.普通的遞歸
- let result = [];
- let fn = function(ary) {
- for(let i = 0; i < ary.length; i++) { let item = ary[i];
- if (Array.isArray(ary[i])){
- fn(item);
- } else {
- result.push(item);
- }
- }
- }
4...擴(kuò)展運(yùn)算符
- while (arr.some(Array.isArray)) {
- arr = [].concat(...arr);
- }
更多內(nèi)容
>>本文地址:http://www.yiyunku.cn/zhuanye/2021/70625.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?