你必须严酷的训练自己,不是因为说面试的严格,人生的变故,生存的压力,命运的沉重,仅仅是因为:你有条件严酷训练。
数组
数组去重
function distinct(a, b) {
return Array.from(new Set([...a, ...b]))
}
function distinct(a,b) {
let arr = a.concat(b);
return arr.filter((item,index) => {
return arr.indexOf(item) === index;
})
}
function distinct(a, b) {
let arr = a.concat(b)
arr.sort(function(a,b){ //对数组进行排序才能方便比较
return a - b;
})
let result = [arr[0]]
for (let i=1, len=arr.length; i<len; i++) {
arr[i] !== arr[i-1] && result.push(arr[i])
}
return result
}
function distinct(a, b) {
let arr = a.concat(b)
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}
function distinct(a, b) {
let arr = a.concat(b);
for (let i=0, len=arr.length; i<len; i++) {
for (let j=i+1; j<len; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
// splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
len--;
j--;
}
}
}
return arr
}
数组拍平
let arr = [1, [2, [3, 4]]];
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(arr)); // [1, 2, 3, 4,5]
手写原生
防抖
function debounce(func, delay) {
var timeout;
return function() {
clearTimeout(timeout);
timeout = setTimeout(()=>{
func.apply(this, arguments);
}, delay);
}
}
节流
function throttle(func, delay) {
var last = 0;
return function () {
var now = Date.now();
if (now >= delay + last) {
func.apply(this, arguments);
last = now;
} else {
console.log("距离上次调用的时间差不满足要求哦");
}
}
}
字符串操作
千分位算法
var test = "1234567890";
function formatCash(str) {
var arr = [];
var counter = 0;
str = (str || 0).toString().split("");
for (var i = str.length - 1; i >= 0; i--) {
counter++;
arr.unshift(str[i]);
if (!(counter % 3) && i !== 0) {
arr.unshift(",");
}
}
return arr.join("");
}
console.log(formatCash(test));