数组相关
借助set
function unique1(arr) {
return Array.from(new Set(arr));
}
function unique2(arr) {
return [...new Set(arr)];
}
使用过滤器
function unique3(arr) {
return arr.filter((item, index) => arr.indexOf(item) === index);
}
使用reduce
function unique4(arr) {
return arr.reduce((acc, cur) => {
if (!acc.includes(cur)) {
acc.push(cur);
}
return acc;
}, []);
}
借助新数组
function unique5(arr) {
let result = [];
arr.forEach((element) => {
if (!result.includes(element)) {
result.push(element);
}
});
return result;
}
数组扁平化
reduce+递归
function flatten1(arr) {
return arr.reduce((acc, cur) => {
return acc.concat(Array.isArray(cur) ? flatten1(cur) : cur);
}, []);
}
递归
function flatten2(arr) {
let result = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
result = result.concat(flatten2(item));
} else {
result.push(item);
}
});
return result;
}
先转换成字符串再转换成数组
function flatten3(arr) {
return arr
.toString()
.split(",")
.map((item) => parseInt(item));
}
function flatten4(arr) {
return arr
.join(",")
.split(",")
.map((item) => parseInt(item));
}
数组乱序
function shuffle1(arr) {
return arr.sort(() => Math.random() - 0.5);
}
function shuffle2(arr) {
let result = [];
while (arr.length) {
let index = parseInt(Math.random() * arr.length);
result.push(arr.splice(index, 1)[0]);
}
return result;
}
function test2() {
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(shuffle2(arr));
}
贡献者
版权所有
版权归属:wynnsimon