「JavaScript」 基础知识要点及常考面试题(四)---[
2019-03-16 本文已影响0人
ybrelax
- javascript 数组怎么去重
方法1:
一般去除重复我喜欢采用 new Set() 因为set集合是不支持重复的
确定,不能过滤复杂的数组(对象数组)
let person = [1,2,3,1,2]
let arr = Array.from(new Set(person)))
方法2: 运用js的reduce()方法 具体介绍
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
person = person.reduce((cur,next) => {
console.log(obj[next.id], next.name);
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
console.log(person);
- 有 1 到 10000 共 10000 个数,如果我从中随机拿走一个数,你如何知道我拿走了哪个?
方式一:相加
1 ~ 10000个数相加然后减去随机拿走后的1 ~ 9999个数即可得出拿走的那个数。
方式二:相乘
1 ~ 10000个数相乘除以随机拿走后的1 ~ 9999个数即可得出拿走的那个数。
- 请写出一个获取数组最大值的函数
let arr = [2, 10, 11, 3, 5];
let max = arr.reduce((pre, next) => {
return Math.max(pre, next)
})
max = Math.max.apply(Math, arr)
max = Math.max(...arr)
max = Reflect.apply(Math.max, Math, arr)
console.log(max);
- [请写出一个秒转时分秒的函数。hh:mm:ss格式。
function getTime(num) {
const hours = Math.floor(num / 3600);
const minutes = Math.floor(num / 60 % 60);
const seconds = Math.floor(num % 60);
return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`
}
function getTime1(num) {
const hours = Math.floor(num / 3600);
const minutes = Math.floor(num / 60 % 60);
const seconds = Math.floor(num % 60);
return [hours, minutes, seconds].map(val => {
return `${String(val).padStart(2, '0')}`
}).join(':')
}
- 已知年月,求该月共多少天?
function getDays (year, month) {
return new Date(year, month + 1, 0).getDate()
}
- 获取URL参数
export const getUrlParam =(name:string)=> {
const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
const r = windwo.location.search.substr(1).match(reg);
return r ? decodeURI(r[2]) : null;
}