前端核心笔试题:核心API

265 阅读1分钟

字符串有哪些常用API,至少10个

数组API,至少15个

手写数组的批处理APIdemo各一个

arr.forEach(item=>console.log(item))
const doubles = arr.map(item=>2*item)
const evens = arr.filter(item=>item%2===0)
const allEven = arr.every(item=>item%2===0)
const hasEven = arr.some(item=>item%2===0)
const sum = arr.reduce((pv,cv)=>pv+cv)

正则相关的5个API各写一个demo

const hasRegSubstr = reg.test(str)
const groupsArr = reg.exec(str)
const substrs = str.match(reg) //reg需要全局模式
const firstSubstrIndex = str.search(reg)
const newStr = str.replace(reg,sub=>newSub)

fn.bind/call/apply demo各一个

function fn(a,b){
    console.log(this,a,b)
}

const thisArg = {name:"jack"}

//返回绑定了this和入参的新函数,需要用到时执行
//thisArg为null时不修改本来的this
//其余入参可以绑定也可以不绑定(即使用默认参数)
let newFn = fn.bind(thisArg,"我是入参a","我是入参b")
newFn()
newFn = fn.bind(thisArg)
newFn("我是入参a","我是入参b")

//绑定了this和入参并立即执行
//thisArg为null时不修改本来的this
//其余入参可以绑定也可以不绑定(即使用默认参数)
fn.call(thisArg,"我是入参a","我是入参b")
fn.apply(thisArg,["我是入参a","我是入参b"])

Set与Map

  • ES6的新增数据结构
  • Set用于基础数据的去重,一些核心API如下:
// 对数组去重
cosnt mySet = new Set([3,1,4,1,5,9,2,6,5,3,5,8])

// 转化回数组
const norepeatArr = [...mySet]

mySet.add(value) //添加元素
mySet.has(value) //判断某元素是否存在
mySet.size //元素数量
  • Map用于键值对的便捷操作与查询,底层就是Object
const contacts = new Map()

//设置或覆盖key-value
contacts.set('Jessie', {phone: "213-555-1234", address: "123 N 1st Ave"})
contacts.has('Jessie') //查询key是否存在
contacts.get('Hilary') //查询key对应的value
contacts.delete('Raymond') //删除key-value
contracts.size //查询键值对的数量