1.set
基本用法
es6提供了新的資料結構set,它類似於陣列,但是成員的值都是唯一的,沒有重複的值
set本身是乙個建構函式,用來生成set資料結構
const s = newset();
[2,3,5,4,5,2,2].foreach(x =>s.add(x))
for(let i of s)
//2 3 5 4
上面**通過add()方法向set結構加入成員,結果表明set結構不會新增重複的值
set
函式可以接受乙個陣列(或者具有 iterable 介面的其他資料結構)作為引數,用來初始化。
//例一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
//類似於
const set = new
set();
document
.queryselectorall('div')
.foreach(div =>set.add(div));
set.size
//56
上面**中,例1和例2都是set函式接受陣列作為引數,例3是接受類似陣列的物件作為引數
上面**也展示了一種去除陣列重複成員的方法。
//去除陣列的重複成員
[...new set(array)]
上面的方法也可以用於,去除字串裡面的重複字元。
[...new set('ababbc')].join('')//"abc"
向 set 加入值的時候,不會發生型別轉換,所以5
和"5"
是兩個不同的值。set 內部判斷兩個值是否不同,使用的演算法叫做「same-value-zero equality」,它類似於精確相等運算子(===
),主要的區別是nan
等於自身,而精確相等運算子認為nan
不等於自身。
let set = newset();
let a =nan;
let b =nan;
set.add(a);
set.add(b);
set
//set
上面**向 set 例項新增了兩個nan
,但是只能加入乙個。這表明,在 set 內部,兩個nan
是相等。
另外,兩個物件總是不相等的。
let set = newset();
set.add({});
set.size //1
set.add({});
set.size
//2
上面**表示,由於兩個空物件不相等,所以它們被視為兩個值。
array.from
方法可以將 set 結構轉為陣列。
const items = new set([1, 2, 3, 4, 5]);const array = array.from(items);
這就提供了去除陣列重複成員的另一種方法。
functiondedupe(array)
dedupe([1, 1, 2, 3]) //
[1, 2, 3]
ES6學習筆記 二
function fun url,timeout 60,callback url為必須引數,其餘為可選。es5 嚴格模式下arguments物件將不會發生變化,es6中如果引數使用了預設引數,則無論是否使用嚴格模式,arguments物件都將與es5嚴格模式保持一致 物件將與命名引數分離 funct...
es6學習筆記(二)
一.let命令宣告變數 1.用法 let宣告的變數只在所處位置的 塊內有效 example1.js for var i 0 i 2 i console.log i i console.log a a console.log b b 執行結果會報錯 2.不存在變數提公升 example1.js con...
es6 學習筆記(二)Symbol
symbol類似於enum,可以起到識別符號的作用。主要可以應用在一下場景。1.可以作為屬性名 var mysymbol symbol var a a.mysymbol hello a mysymbol undefined a mysymbol hello 要注意symbol值作為物件屬性名時,不能...