前端面试之路

「JavaScript」 基础知识要点及常考面试题(四)---[

2019-03-16  本文已影响0人  ybrelax
  1. 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. 有 1 到 10000 共 10000 个数,如果我从中随机拿走一个数,你如何知道我拿走了哪个?

方式一:相加
1 ~ 10000个数相加然后减去随机拿走后的1 ~ 9999个数即可得出拿走的那个数。
方式二:相乘
1 ~ 10000个数相乘除以随机拿走后的1 ~ 9999个数即可得出拿走的那个数。

  1. 请写出一个获取数组最大值的函数
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);
  1. [请写出一个秒转时分秒的函数。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(':')
 }
  1. 已知年月,求该月共多少天?
function getDays (year, month) {
    return new Date(year, month + 1, 0).getDate()
}
  1. 获取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;
}
上一篇下一篇

猜你喜欢

热点阅读