面试题事后分享,一些js处理方法的题型,是否最优解尚未可知,但从输入输出结果上来看还尚可,以后有相关业务开发也能做一个参考。
1. 根据规律设计一个方法使得结果成立:
输入["age","name","apple"]输出e
输入["foot","hair","finger"]输出""
输入["function","question","action]输出"tion"
大致就是这个意思,具体题目记不清
//这题的考的是返回所有单词的相同的结尾,单词长度不一,所以先找出最短的一项
function getLen(Array) {
let Len = Array[0].length
for (let i = 1; i < Array.length; i++) {
if (Array[i].length < Len) {
Len = Array[i].length
}
}
return Len
}
//函数处理
function getEndString (Array) {
//获取长度
let Len = getLen(Array)
//设置空字符串
let EndString = ''
//循环判断
for (let i = 0; i <= Len; i++) {
for (let j = 1; j < Array.length; j++) {
if (Array[0].charAt(Array[0].length - i - 1) !=Array[j].charAt(Array[j].length - i - 1) && i != 0) {
return EndString
} else if (Array[0].charAt(Array[0].length - i - 1) != Array[j].charAt(Array[j].length - i - 1) && i == 0) {
return ""
}
}
EndString = Array[0].charAt(Array[0].length - i - 1) + EndString
}
}
2. 随机输出色值#333333~#DDDDDD的值,但是要求有50%的概率输出#333333
以下是个人的见解
//这是获取随机数函数
function getrandom(n, m) {
return Math.floor(Math.random() * (m - n + 1) + n)
}
//函数方法
function getColor() {
let arr = ['3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D'];
let str = '#'
for (let i = 0; i < 6; i++) {
str += arr[getrandom(0, arr.length - 1)]
}
//主要是这一步不知道是否正确
//这里拿100个取随机数,取中位数然后进行判断,然后循环100调用然后统计次数确实在50次多有,但不是精确的50%,不知道各个大神有啥指出
if (getrandom(1, 100) <= 50) {
str = '#333333'
}
return str
}
3.手写instanceof,这个好多手写题都出现过,贴一下代码他人代码
function myInstanceof(left, right) {
let proto = Object.getPrototypeOf(left), // 获取对象的原型,是不是用__proto__也能获取值来比较
prototype = right.prototype;
// 判断构造函数的 prototype 对象是否在对象的原型链上
while (true) {
if (!proto) return false;
if (proto === prototype) return true;
proto = Object.getPrototypeOf(proto);
}
}
---------------------------------------先更新这些,后续再继续------------------------------