JS配列の平準化を実現する方法
1043 ワード
一、缘由
ギthubで問題を見ましたが、「行列を平準化して重複データを除去し、最終的には昇順で重複しない配列を得る」というのは次の通りです.
問題を見る第一の考えは再帰である.要素が配列かどうかを判断するたびに、配列であれば再帰関数を呼び出します.実現は複雑ではない:
ギthubで問題を見ましたが、「行列を平準化して重複データを除去し、最終的には昇順で重複しない配列を得る」というのは次の通りです.
:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
,
二、方法問題を見る第一の考えは再帰である.要素が配列かどうかを判断するたびに、配列であれば再帰関数を呼び出します.実現は複雑ではない:
function recursive(data, result) {
if (Object.prototype.toString.call(data) === '[object Array]') {
data.forEach(item => {
recursive(item, result)
})
} else {
result.push(data)
}
}
function serialArray(array) {
let result = []
array.forEach(item => {
recursive(item, result)
})
return Array.from(new Set(result)).sort((a, b) => a - b)
}
let arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
console.log(serialArray(arr)) // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ]
でも、オーディエンス一行のコードが終わったのを見て、黙々と汗を流しています.やはり配列の原型の方法に慣れていないです.こんなにいいものがありますか?Array.from(new Set(arr.flat(Infinity))).sort((a,b) => a-b)