54数组扁平化、去重与排序
54数组扁平化、去重与排序1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>54数组扁平化、去重与排序</title>
</head>
<body>
<script>
let arr = [9, 20, 4, [1, 2, 3, 4], [2, 3, 4, [1, 2, 3, [1, 2, 3]], 5], [1, 2, 3, 4], [3, 4, 5, 9]]
console.log(flatten(arr));
function flatten(arr) {
let _arr = arr || [],
fArr = [],
len = _arr.length,
item;
for (let i = 0; i < len; i++) {
item = _arr[i]
if (_isArr(item)) {
fArr = fArr.concat(flatten(item))
} else {
fArr.push(item)
}
}
return fArr = Array.from(new Set(fArr)).sort((a, b) => {
return a - b
})
function _isArr(item) {
return {}.toString.call(item) === '[object Array]'
}
}
</script>
</body>
</html>
54数组扁平化、去重与排序2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>54数组扁平化、去重与排序</title>
</head>
<body>
<script>
let arr = [40,9,20,4,[1, 2, 3, 4], [2, 3, 4, [1,2,3,[1,2,3]],5], [1, 2, 3, 4], [3, 4, 5, 9]]
Array.prototype.flatten = function () {
let _arr = this,
toStr = {}.toString
if (toStr.call(_arr) !== "[object Array]"){
throw new Error('必须是数组')
}
let fArr = []
_arr.forEach(function (item) {
if (toStr.call(item) === "[object Array]"){
fArr = fArr.concat(item.flatten())
}else {
fArr.push(item)
}
})
return fArr = Array.from(new Set(fArr)).sort((a,b)=>{
return a - b
});
}
console.log(arr.flatten());
</script>
</body>
</html>
54数组扁平化、去重与排序3
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>54数组扁平化、去重与排序</title>
</head>
<body>
<script>
let arr = [40,9,20,4,[1, 2, 3, 4], [2, 3, 4, [1,2,3,[1,2,3]],5], [1, 2, 3, 4], [3, 4, 5, 9]]
Array.prototype.flatten = function () {
let _arr = this,
toStr = {}.toString
if (toStr.call(_arr) !== "[object Array]"){
throw new Error('必须是数组')
}
let fArr = []
return _arr.reduce(function (prev,item) {
let newArr = prev.concat(
toStr.call(item) === '[object Array]' ? item.flatten() : item
)
return Array.from(new Set(newArr)).sort((a,b)=>{
return a - b
});
},[])
}
console.log(arr.flatten());
</script>
</body>
</html>
54数组扁平化、去重与排序4
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>54数组扁平化、去重与排序</title>
</head>
<body>
<script>
let arr = [40, 9, 20, 4, [1, 2, 3, 4], [2, 3, 4, [1, 2, 3, [1, 2, 3]], 5], [1, 2, 3, 4], [3, 4, 5, 9]]
const flatten = (arr) => arr.reduce((prev, item) => prev.concat({}.toString.call(item) === '[object Array]' ? flatten(item) : item), [])
function compare(a, b) {
return a - b
}
console.log(Array.from(new Set(flatten(arr))).sort(compare));
</script>
</body>
</html>
54数组扁平化、去重与排序5
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>54数组扁平化、去重与排序</title>
</head>
<body>
<script>
let arr = [40, 9, 20, 4, [1, 2, 3, 4], [2, 3, 4, [1, 2, 3, [1, 2, 3]], 5], [1, 2, 3, 4], [3, 4, 5, 9]]
console.log(Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>a-b));
</script>
</body>
</html>