输入:“get1_install2_app3_list4_by5_android6”(每个单词后面总会携带一个数字,只有偶数才删掉),我不用循环只用正则怎么实现输出"get1InstallApp3ListBy5Android"?
function regroup(str) {
// 每个都是字母+数字+_,下划线先不管,取出匹配的字符串
let result = str.replace(/[a-z]+\d/g, function (match) {
// 每个字符串首字母大写
let bufStr = match.slice(0, 1).toUpperCase() + match.slice(1)
/判断奇偶数,偶数剔除,基数啥也不干
if (bufStr[bufStr.length - 1] % 2 === 0) {
bufStr.slice(0, bufStr.length - 2)
}
return bufStr
})
// 把最终结果第一个字母转小写,有点闲,同时剔除_,
return (result.slice(0, 1).toLowerCase() + result.slice(1)).split('_').join("")
}
console.log(regroup('get1_install2_app2_list4_by5_android6'))
不使用任何循环控制语句和迭代器的情况下实现一个0到1000的数组赋值
还算比较简单的一道题,可能有坑
function createArray() {
return Array.from({ length: 1000 }, (item, index) => {
return index
})
}
判断两个对象(注意特殊对象的处理)找出不一致的是哪个变量,返回的格式类似:"root变量-父变量-...-不一致的变量"的字符串;
不会,之后研究研究,根本没看懂想干啥
将一个一维数组按照一定的规律转换成二维数组,具体看图吧,这种题可以涉及到图形业务
输入一个数组(一维的) arr = [1,2,3,4], 每一个数字横纵放大2倍,最终输出一个二维数组
意思大概就是
//提示[1,2,3,4]可以看成二维的
[1,2] ===> [1,1,2,2]
[3,4] [1,1,2,2]
[3,3,4,4]
[3,3,4,4]
function EnlargeImg(arr, l, w) {
// 先把arr转换成二维数组可能会好点
if (l !== w) return;
const size = Math.sqrt(arr.length)
if (Math.floor(size) !== size) return;
const matrix = []
const long = size * w;
for (let a = 0; a < long; a++) {
matrix.push([])
}
for (let x = 0; x < long; x++) {
for (let y = 0; y < long; y++) {
// 用行来想如何赋值
matrix[x][y] = arr[Math.floor(x / w) * size + Math.floor(y / w)]
}
}
console.log(matrix)
}
EnlargeImg([1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 2)