陣列處理百解

2021-09-24 14:13:00 字數 3635 閱讀 4938

目錄:

1.扁平化n維陣列

2.去重

3.排序

4.最大值

5.求和

6.合併

7.判斷是否包含值

8.類陣列轉化

9.每一項設定值

10.每一項是否滿足

11.有一項滿足

12.過濾陣列

13.物件和陣列轉化

1.扁平化n維陣列

1.終極篇

[ 1, [ 2 , 3 ] ].flat(2) //[ 1, 2, 3 ]

[ 1, [ 2, 3, [ 4,5 ] ].flat(3)//[1,2,3,4,5]

[ 1, [ 2, 3, [ 4,5 ] ] ].tostring()//'1,2,3,4,5'

[ 1[ 2, 3, [ 4, 5[...] ].flat(infinity)//[1,2,3,4...n]

array.flat(n)是es10扁平陣列的api,n表示維度,n值為infinity時維度為無限大

2.開始篇

funtcion flatten( arr ) 

return arr;

}flatten( [ 1, [ 2, 3] ] ) //[1,2,3]

flatten( [ 1, [ 2, 3, [ 4, 5 ] ] ] ) //[1,2,3,4,5]

實質是利用遞迴和陣列合併方法concat實現扁平

2.去重

1.終極篇

array.from(new set([1,2,3,3,4,4])) //[1,2,3,4]

[...new set([1,2,3,3,4,4])] //[1,2,3,4]

set是es6新出來的一種定義不重複陣列的資料型別

array.from是講類陣列轉化為陣列

...是擴充套件運算子,講set裡面的值轉化為字串

2.開始篇

array.prototype.distinct = nums => 

const result =

for (const n of nums)

}return result

}[1,2,3,3,4,4].distinct(); //[1,2,3,4]

取新陣列存值,迴圈兩個陣列值相比較

3.排序

1.終極篇

[1,2,3,4].sort((a, b) => a - b); // [1, 2,3,4],預設是公升序

[1,2,3,4].sort((a, b) => b - a); // [4,3,2,1] 降序

sort是js內建的排序方法,引數為乙個函式

2.開始篇

氣泡排序

array.prototype.bublesort=function () }}

return arr;

}[1,2,3,4].bublesort() //[1,2,3,4]

選擇排序

array.prototype.selectsort=function () 

}} return arr;

} [1,2,3,4].selectsort() //[1,2,3,4]

4.最大值

1.終極篇

math.max(...[1,2,3,4]) //4

[1,2,3,4].reduce( (prev, cur,curindex,arr)=> ,0) //4

math.max()是math物件內建的方法,引數是字串;

reduce是es5的陣列api,引數有函式和預設初始值;

函式有四個引數,pre(上一次的返回值),cur(當前值),curindex(當前值索引),arr(當前陣列)

5.求和

1.終極篇

[1,2,3,4].arr.reduce(function (prev, cur) ,0) //10
2.開始篇

function sum(arr)  else if (len == 1) else 

}sum([1,2,3,4]) //10

利用slice擷取改變陣列,在利用遞迴求和

6.合併

1.終極篇

[1,2,3,4].concat([5,6]) //[1,2,3,4,5,6]

[...[1,2,3,4],...[4,5]] //[1,2,3,4,5,6]

2.開始篇

let arr=[1,2,3,4];

[5,6].map(item=>)

//arr值為[1,2,3,4,5,6],注意不能直接return出來,return後只會返回[5,6]

7.判斷是否包含值

1.終極篇

[1,2,3].includes(4) //false

[1,2,3].indexof(4) //-1 如果存在換回索引

[1, 2, 3].find((item)=>item===3)) //3 如果陣列中無值返回undefined

[1, 2, 3].findindex((item)=>item===3)) //2 如果陣列中無值返回-1

includes(),find(),findindex()是es6的api

2.開始篇

[1,2,3].some(item=>) //true 如果不包含返回false
8.類陣列轉化

1.終極篇

array.prototype.slice.call(arguments) //arguments是類陣列(偽陣列)

array.from(arguments)

[...arguments]

類陣列:表示有length屬性,但是不具備陣列的方法

array.from是將類似陣列或可迭代物件建立為陣列

...是將類陣列擴充套件為字串,再定義為陣列

2.開始篇

array.prototype.slice = function(start,end)  

return result;

}

9.每一項設定值

1.終極篇

[1,2,3].fill(false) //[false,false,false]
fill是es6的方法

2.開始篇

[1,2,3].map(() => 0)
10.每一項是否滿足

[1,2,3].every(item=>) //false
every是es5的api,每一項滿足返回 true

11.有一項滿足

[1,2,3].some(item=>) //true
some是es5的api,有一項滿足則返回true

12.過濾陣列

[1,2,3].filter(item=>) //[3]
filter是es5的api,返回滿足新增的項的陣列

13.物件和陣列轉化

object.keys() //['name','age']

object.values() //['張三',14]

object.entries() //[[name,'張三'],[age,14]]

object.fromentries([name,'張三'],[age,14]) //es10的api,chrome不支援 , firebox輸出

百思不得解!

此處專門用來收集一些問題 1.問題背景 記憶體對映檔案的優點在於可以保密檔案。可以減少i o操作。但檔案過大的話並不推薦使用。例如,我的程式要引用乙個叫a.exe的程式,而a.exe是別人寫的我沒有原始碼,但我引用該exe時又不希望別人獲得這個exe,只希望別人在我的程式中使用a.exe的功能。此時...

python百雞百錢最優解 python練習題

1.小明過年得到1500元壓歲錢,在商場看中乙個書包,正好商場做活動打八五折,從鍵盤輸入書包的 輸出折扣後書包的 以及小明買了書包後剩下的錢。money 1500 bao float input 請輸入書包的 0.85 sheng money bao print 折扣後書包的 bao print 小...

樹狀陣列趣解

4操作原理 5小結 感謝各位能在白忙之中抽空來看鄙人的文章,cgg在這有禮了!先給張圖。下面的a是原陣列,而c則是a對應的樹狀陣列。所以你應該會恍然大悟 也許誇張了些 樹狀陣列是陣列的另一種表現形式,而這種表現形式會大大提高其各種操作的效率,在競賽中,也時常會考察,那麼下面,就讓我們一起去解開他神秘...