es6 Set 結合 Array.from 用法


Array.from的設計初衷是快速便捷的基於其他對象創建新數組,准確來說就是從一個類似數組的可迭代對象( Object、Array、StringSetMaparguments等 )創建一個新的數組實例,說人話就是,只要一個對象有迭代器,Array.from就能把它變成一個數組

Array.from() 方法接受類數組對象以及可迭代對象,它可以接受一個 map 函數,並且,這個 map 函數不會跳過值為 undefined 的數值項

var arr=[1,2,3,2,3,4,5];   

var set=new Set(arr)

var arr1=Array.from(set)

 

重復數組  -  Set 化 (去重) 轉回數組

上述代碼,實現數組去重,省去了傳統實現中的循環算法

 

其它用法:

1 類數組轉數組

Array.from('Hey');                   // => ['H', 'e', 'y']
Array.from(new Set(['one', 'two'])); // => ['one', 'two']

const map = new Map();
map.set('one', 1)
map.set('two', 2);
Array.from(map); // => [['one', 1], ['two', 2]]
View Code

 

2 拷貝數組

2.1  淺拷貝

const numbers = [3, 6, 9];
const numbersCopy = Array.from(numbers);

numbers === numbersCopy; // => false
View Code

2.2 深拷貝

function recursiveClone(val) {
    return Array.isArray(val) ? Array.from(val, recursiveClone) : val;
}

const numbers = [[0, 1, 2], ['one', 'two', 'three']];
const numbersClone = recursiveClone(numbers);

numbersClone; // => [[0, 1, 2], ['one', 'two', 'three']]
numbers[0] === numbersClone[0] // => false
View Code

 

3 初始化數組   Array.from({length: 10}, (v, i) => i); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

const length = 3;
const init   = 0;
const result = Array.from({ length }, () => init);
View Code

 

4 生成范圍數組

function range(end) {
    return Array.from({ length: end }, (_, index) => index);
}

range(4);
View Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM