目录
1、数组去重
常规:
双层for循环去重
function unique(arr) {
for (let i=0; i<arr.length; i++) {
for (let j=i+1; j<arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
优化:
利用indexOf去重:
function unique(arr) {
if (!Array.isArray(arr)) {
console.log("type error!");
return;
}
let array = [];
for (let i=0; i<arr.length; i++) {
if (array.indexOf(arr[i]) === -1) {
array.push(arr[i]);
}
}
return array;
}
更简单:
利用Array.from与set去重
function unique (arr) {
if (!Array.isArray(arr)) {
console.log("type error!");
return;
}
return Array.from(new Set(arr));
}
2、转换数字类型/字符串
转数字:
/**
* 常规:
parseInt()或Number()
也可以使用“+”来实现:
*/
const age = "10"
const number = +age
转字符串:
/**
* 常规:
toString()或String()
也可以使用“+”来实现:
*/
const age = 10
const string = age + "";
3、性能追踪(测试耗时)
let start = performance.now();
let sum = 0;
for (let i=0; i<100000; i++) {
sum+=1;
}
let end = performance.now();
let timeuse = end - start
console.log(timeuse)
4、数组扁平化
数组扁平化就是将一个多维数组转换为一个一维数组
常规:递归实现
let arr = [1, [2, [3, 4]]];
function flatten(arr) {
let result = [];
for (let i=0; i<arr.length; i++) {
if (Array.isArray(arr[i])){
result = result.concat(flatten(arr[i]));
} else {
result.push(arr[i]);
}
}
return result;
}
flatten(arr)
优化:使用reduce
let arr = [1, [2, [3, 4]]];
function flatten(arr) {
return arr.reduce(function (prev, next) {
return prev.concat(Array.isArray(next) ? flatten(next) : next);
}, []);
}
flatten(arr)
es6新增:flat
参数depth,代表展开嵌套数组的深度,默认是1
let arr = [1, [2, 3, [4, [5]]]];
arr.flat(3); //[1,2,3,4,5]