箭頭函數(shù)
簡寫方法速記
將原函數(shù)的“function”關(guān)鍵字和函數(shù)名都刪掉质欲,并使用“=>”連接參數(shù)列表和函數(shù)體税稼。
function add(a,b){
return a+b;
}
//簡寫為:
(a,b)=>{//刪掉了function和函數(shù)名
return a+b;
}
var add = function(a,b){
return a+b;
}
//簡寫為:
var add = (a,b)=>{ //刪掉了function
return a+b;
}
1肝匆、Set
ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set懂讯。它類似于數(shù)組,但是成員的值都是唯一的伐厌,沒有重復(fù)的值承绸。
Set 本身是一個構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)挣轨。
const s = new Set();
[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));
for (let i of s) {
console.log(i);
}
// 2 3 5 4
上面代碼通過add方法向 Set 結(jié)構(gòu)加入成員军熏,結(jié)果表明 Set 結(jié)構(gòu)不會添加重復(fù)的值。
在Es6中 for of 只能遍歷數(shù)組卷扮,但不能遍歷json , 主要是配合 new Map() 使用
for in 數(shù)組荡澎,json 都可以遍歷
var arr = ['apple', 'banana', 'orange', 'pear']
//for in 數(shù)組,json 都可以遍歷
for(var i in arr){
console.log(i) //i 代表的是數(shù)組的索引值
console.log(arr[i])
}
//在Es6中 for of 只能遍歷數(shù)組晤锹,但不能遍歷json , 主要是配合 new Map() 使用
for(var j of arr){
console.log(j) //j apple, banana, orange, pear 直接輸出值
}
---------------------
作者:Mr_lwb
來源:CSDN
原文:https://blog.csdn.net/u010881899/article/details/80911671
Set 函數(shù)可以接受一個數(shù)組(或者具有 iterable 接口的其他數(shù)據(jù)結(jié)構(gòu))作為參數(shù)摩幔,用來初始化。
// 例一
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
// 例二
const items = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5
// 例三
const set = new Set(document.querySelectorAll('div'));
set.size // 56
去重
方法一:
// 去除數(shù)組的重復(fù)成員
[...new Set(array)]
方法二:
Array.from方法可以將 Set 結(jié)構(gòu)轉(zhuǎn)為數(shù)組鞭铆。
const items = new Set([1, 2, 3, 4, 5]);
const array = Array.from(items);
這就提供了去除數(shù)組重復(fù)成員的另一種方法或衡。
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]
在 Set 內(nèi)部,兩個NaN是相等车遂。兩個對象總是不相等的封断。
//兩個NaN
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}
//兩個對象
let set = new Set();
set.add({});
set.size // 1
set.add({});
set.size // 2
Set實(shí)例的屬性和方法
Set 結(jié)構(gòu)的實(shí)例有以下屬性。
Set.prototype.constructor:
構(gòu)造函數(shù)艰额,默認(rèn)就是Set函數(shù)澄港。
Set.prototype.size:
返回Set實(shí)例的成員總數(shù)。
Set 實(shí)例的方法分為兩大類:操作方法(用于操作數(shù)據(jù))和遍歷方法(用于遍歷成員)柄沮。下面先介紹四個操作方法。
add(value):
添加某個值,返回 Set 結(jié)構(gòu)本身祖搓。
delete(value):
刪除某個值狱意,返回一個布爾值,表示刪除是否成功拯欧。
has(value):
返回一個布爾值详囤,表示該值是否為Set的成員。
clear():
清除所有成員镐作,沒有返回值藏姐。
遍歷
Set 結(jié)構(gòu)的實(shí)例有四個遍歷方法,可以用于遍歷成員该贾。
keys():
返回鍵名的遍歷器
values():
返回鍵值的遍歷器
entries():
返回鍵值對的遍歷器
forEach():
使用回調(diào)函數(shù)遍歷每個成員
需要特別指出的是羔杨,Set的遍歷順序就是插入順序。這個特性有時非常有用杨蛋,比如使用 Set 保存一個回調(diào)函數(shù)列表兜材,調(diào)用時就能保證按照添加順序調(diào)用。
(1)keys()逞力,values()曙寡,entries()
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"]
上面代碼中,entries方法返回的遍歷器寇荧,同時包括鍵名和鍵值举庶,所以每次輸出一個數(shù)組,它的兩個成員完全相等揩抡。
2)forEach()
Set 結(jié)構(gòu)的實(shí)例與數(shù)組一樣户侥,也擁有forEach方法,用于對每個成員執(zhí)行某種操作捅膘,沒有返回值添祸。
set = new Set([1, 4, 9]);
set.forEach((value, key) => console.log(key + ' : ' + value))
// 1 : 1
// 4 : 4
// 9 : 9
Map
鍵值對形式
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
上面代碼使用 Map 結(jié)構(gòu)的set方法,將對象o當(dāng)作m的一個鍵寻仗,然后又使用get方法讀取這個鍵刃泌,接著使用delete方法刪除了這個鍵。
Map構(gòu)造函數(shù)接受數(shù)組作為參數(shù)署尤,實(shí)際上執(zhí)行的是下面的算法耙替。
const items = [
['name', '張三'],
['title', 'Author']
];
const map = new Map();
items.forEach(
([key, value]) => map.set(key, value)
);
Set和Map都可以用來生成新的 Map。
const set = new Set([
['foo', 1],
['bar', 2]
]);
const m1 = new Map(set);
m1.get('foo') // 1
const m2 = new Map([['baz', 3]]);
const m3 = new Map(m2);
m3.get('baz') // 3