javascript數組的總結和擴展

修改原數組的方法:splice/reverse/fill/copyWithin/sort/push/pop/unshift/shift

原數組不變的方法:slice/map/forEach/every/filter/reduce/entries/find

1、修改數組的:

splice(index,num,item1,item2..) //index開始刪除數組下標,num刪除數量,item。。插入的元素

reverse() 數組翻轉

sort() 數組排序

push()數組末尾增加一個元素

unshift() 數組頭部增加一個元素

pop() 取出數組末尾的一個元素

shift() 取出數組頭部一個元素

es6新增的方法:

concat()合併數組 [3,45].concat(3,[3,7])

fill()  fill方法使用給定值,填充一個數組

new Array(3).fill(7)

// [7, 7, 7]

copyWithin(target,start,end);數組實例的copyWithin方法,在當前數組內部,將指定位置的成員複製到其他位置(會覆蓋原有成員),然後返回當前數組

target(必需):從該位置開始替換數據。如果爲負值,表示倒數。

start(可選):從該位置開始讀取數據,默認爲 0。如果爲負值,表示倒數。

end(可選):到該位置前停止讀取數據,默認等於數組長度。如果爲負值,表示倒數。

[1, 2, 3, 4, 5].copyWithin(0, 3)

// [4, 5, 3, 4, 5]

2、不修改數組的方法:

slice/map/forEach/every/filter/reduce/entries/find

 

ES6新增的數據結構

一、Set:它類似於數組,但是成員的值都是唯一的,沒有重複的值

創建set數據方法:

(1)通過add

var a = new Set();

[2,3,4].forEach((index,val)=>{

a.add(val)

})

(2)直接new操作數組和類數組

var a = new Set([23,45,66])

當然set也能轉爲化普通數組[...a]

// 去除數組的重複成員

[...new Set(array)]

其中NaN和NaN是相等的,{}和{}是不相等的

Set 結構的實例有以下屬性:

Set.prototype.constructor:構造函數,默認就是Set函數。

Set.prototype.size:返回Set實例的成員總數。

Set 實例的方法分爲兩大類:操作方法(用於操作數據)和遍歷方法(用於遍歷成員)。下面先介紹四個操作方法。

add(value):添加某個值,返回 Set 結構本身。

delete(value):刪除某個值,返回一個布爾值,表示刪除是否成功。

has(value):返回一個布爾值,表示該值是否爲Set的成員。

clear():清除所有成員,沒有返回值。

遍歷方法:

Set 結構的實例有四個遍歷方法,可以用於遍歷成員。

keys():返回鍵名的遍歷器

values():返回鍵值的遍歷器

entries():返回鍵值對的遍歷器

forEach():使用回調函數遍歷每個成員

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {

console.log(item);

}

// red

// green

// blue

 

for (let item of set.values()) {

console.log(item);

}

// red

// green

// blue

 

for (let item of set.entries()) {

console.log(item);

}

// ["red", "red"]

// ["green", "green"]

// ["blue", "blue"]

let set = new Set([1, 4, 9]);

set.forEach((value, key) => console.log(key + ' : ' + value))

其中map filter Array.from也能操作

二 Map :Map 結構提供了“值—值”的對應,是一種更完善的 Hash 結構實現。如果你需要“鍵值對”的數據結構,Map 比 Object 更合適

創建Map數據結構:

(2)通過set方法:

const m = new Map();

const o = {p: 'Hello World'};

 

m.set(o, 'content')

m.get(o) // "content"

 

m.has(o) // true

m.delete(o) // true

m.has(o) // false

(2)通過數組方法

const map = new Map([

['name', '張三'],

['title', 'Author']

]);

 

map.size // 2

map.has('name') // true

map.get('name') // "張三"

map.has('title') // true

map.get('title') // "Author"

(3)Map 結構原生提供三個遍歷器生成函數和一個遍歷方法。

 

keys():返回鍵名的遍歷器。

values():返回鍵值的遍歷器。

entries():返回所有成員的遍歷器。

forEach():遍歷 Map 的所有成員。

(4)Map還可以通過...[]轉換爲數組

const myMap = new Map()

.set(true, 7)

.set({foo: 3}, ['abc']);

[...myMap]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章