問題:使用JavaScript,將flattened = [[0, 1,2,6], [2, 3,7], [4,3,4, 5]] 去重并重新形成一個從小到大排序的數(shù)組买优。
在JavaScript中,我們可以通過以下步驟來完成這個任務(wù):
- 使用
Array.prototype.flat()
方法將嵌套的數(shù)組“扁平化”成一個一維數(shù)組蹦狂。 - 使用
Set
來去除數(shù)組中的重復(fù)元素驻售。 - 將
Set
轉(zhuǎn)換回數(shù)組。 - 使用
Array.prototype.sort()
方法對數(shù)組進行排序库北。
下面是具體的實現(xiàn)代碼:
let flattened = [[0, 1, 2, 6], [2, 3, 7], [4, 3, 4, 5]];
// 步驟1: 扁平化數(shù)組
let flatArray = flattened.flat();
// 步驟2: 使用Set去重
let uniqueElements = new Set(flatArray);
// 步驟3: 將Set轉(zhuǎn)換回數(shù)組
let uniqueArray = [...uniqueElements];
// 步驟4: 對數(shù)組進行排序
uniqueArray.sort((a, b) => a - b);
console.log(uniqueArray); // 輸出: [0, 1, 2, 3, 4, 5, 6, 7]
解析:
這段代碼首先使用flat()
方法將嵌套的數(shù)組flattened
轉(zhuǎn)換成一個一維數(shù)組flatArray
。
這里使用了 flat() 方法來展平數(shù)組们陆,該方法默認會將所有子數(shù)組的元素與當前數(shù)組的元素合并寒瓦,并返回一個新數(shù)組。如果不確定子數(shù)組的嵌套深度坪仇,可以傳遞 Infinity 作為 flat() 方法的參數(shù)來展平任意深度的數(shù)組:
const flatArray = flattened.flat(Infinity);
例如:
let flattened = [[1231,1231,232,[9,9,8,7,6,[01,02,04,03]]],989,231]
let flatArray = flattened.flat(Infinity);
console.log(flatArray); // [1231, 1231, 232, 9, 9, 8, 7, 6, 1, 2, 4, 3, 989, 231]
然后杂腰,它使用Set
對象uniqueElements
來去除flatArray
中的重復(fù)元素。由于Set
對象只存儲唯一的值椅文,所以這一步自動完成了去重操作喂很。接下來,通過擴展運算符...
將Set
對象轉(zhuǎn)換回數(shù)組uniqueArray
皆刺。最后少辣,使用sort()
方法根據(jù)數(shù)值大小對數(shù)組進行排序。sort()
方法接受一個比較函數(shù)作為參數(shù)芹橡,這里我們提供了一個簡單的函數(shù)(a, b) => a - b
,它根據(jù)a
和b
的差值來確定它們的排序順序望伦。