飞猪前端笔试题答案 仅跑过用例不保证健壮
// 获取最大不重复子串
function lengthOfLongestSubstring(str) {
let left = 0
let right = 1
let count = str.length ? 1 : 0
let subStr = str[0] || ""
while (right < str.length) {
let subTemp = str.slice(left, right)
if (~subTemp.indexOf(str[right])) {
left++
continue
} else {
right++
subTemp = str.slice(left, right)
if (subStr.length < subTemp.length) {
subStr = subTemp
count = subTemp.length
}
}
}
return `'${subStr}':${count}`
}
/*
字符串长度 0 和 1,需要单独处理
left左移不会更新最长结果
right右移则有可能影响
*/
console.log(lengthOfLongestSubstring('')) // 返回 '':0
console.log(lengthOfLongestSubstring('cbca')) // 返回 'bca':3
console.log(lengthOfLongestSubstring('c')) // 返回 'c':1
console.log(lengthOfLongestSubstring('bbbbb')) // 返回 'b':1
console.log(lengthOfLongestSubstring('abcdaccbac')) // 返回 'abcd':4
// 实现对象.获取属性 链式
function fn(obj, str) {
let props = str.split('.')
let val = null
val = props.reduce((acc, item) => {
return acc[item]
}, obj)
return val
}
const obj = {
a: {
b: {
c: 'c5',
d: 2
}
}
}
console.log(fn(obj, 'a.b.c'))
// js变量比较相等
function isValueEqual(a, b) {
if(!isObject(a) && !Array.isArray(a)) {
return a === b
}
if (a === b) {
return true
}
let key1s = Object.keys(a)
let key2s = Object.keys(b)
if(key1s.length !== key2s.length) {
return false
}
return key1s.every(item => {
return isValueEqual(a[item], b[item])
})
}
function isObject(obj) {
return typeof obj === 'object' && obj !== null
}
console.log(isValueEqual('3')) // => false
console.log(isValueEqual(null, undefined)) // => false
console.log(isValueEqual(false, undefined)) // => false
console.log(isValueEqual(1, 1)) // => true
console.log(isValueEqual(1, 2)) // => false
console.log(isValueEqual(1, '1')) // => false
console.log(isValueEqual([1,2], [1,2])) // => true
console.log(isValueEqual([1, { a: 1, b: 2 }], [1, { a: 1, b: 2 }])) // => true
console.log(isValueEqual({ a: 1, b: 2 }, { a: 1, b: 2 })) // => true
console.log(isValueEqual({ a: 1, b: 2 }, { a: 1, b: 2, c: 3 })) // => false
console.log(isValueEqual({ a: 1, b: [1, 2] }, { a: 1, b: [1, 2] })) // => true
内容会不断更新,欢迎批评指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)