1.数组去重 ( indexOf , set-es6)
indexOf 方法
function tt(arr) {
var newarr = [];
arr.map(function(val) {
if(newarr.indexOf(val) === -1) {
newarr.push(val)
}
})
return newarr;
}
set 方法
function tt(arr) {
return Array.from(new Set(arr))
}
二维数组去重
function unique(arr){
var r = [];
arr.forEach(function(item) {
if(Array.isArray(item)) {
item.forEach(function(val) {
if(r.indexOf(val) === -1) {
r.push(val)
}
})
}else {
if(r.indexOf(item) === -1) {
r.push(item)
}
}
})
return r;
}
2.数组每limit个数求一下和,最后不满limit个数的元素舍弃
function tt(arr,limit) {
var sum = [];
var s = 0;
for (var i = 0; i < arr.length; i++) {
s = s + arr[i];
if( (i+1) % limit === 0) {
sum.push(s);
s = 0;
}
}
return sum;
}
3.将数组中与Key相等的值移动到第一位
function(arr,key) {
arr.map(function(val,index){
if(val === key) {
arr.splice(index,1)
}
arr.unshift(key);
return arr;
})
}
4. 找出数组中出现重复的数字
function repeat(arr) {
var r = [];
for(var i = 0 ; i < arr.length; i++) {
if(arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) {
if(r.indexOf(arr[i]) === -1) {
r.push(arr[i])
}
}
}
return r;
}
5. 实现一个打点计时器(来�自����牛客网),要求
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
3、第一个数需要立即输出
function t(start,end) {
var timer = null;
console.log(start);
timer = setInterval(function() {
if(start<end) {
console.log(++start)
}else {
clearInterval(timer)
}
},100);
return {
cancel: function() {
clearInterval(timer)
}
}
}
6. 求出数组中的最大最小值
利用Math.max,Math.min
function maxAndMin(arr) {
var min,
max;
min = Math.max.apply(Math, arr);
max = Math.min.apply(Math, arr);
return 'Max is:' + max + ', min is:' + min;
}
maxAndMin([7,2,3,8,9]) // Max is:2, min is:9