增进JavaScript理解的题目
Posted 今天天气真好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了增进JavaScript理解的题目相关的知识,希望对你有一定的参考价值。
在实习求职面试中,被告知代码掌握不够,特开此文练习javascript技巧
一、JavaScript技巧篇
1.编写一个parseNum函数将变量内的number数据类型变为对应string
示例:
//示例
var o = {
a:1,
b:{
c:2,
d:3,
e:[4,5,6]
}
}
var b = parseNum(o)
b = {
a:\'1\',
b:{
c:\'2\',
d:\'3\',
e:[\'4\',\'5\',\'6\']
}
}
答案:
function parseNum(obj){
if(typeof obj === \'number\')
return obj.toString()
if(typeof obj === \'object\'){
if(!obj && typeof obj !=="undefined" && obj !== 0) return obj
else{
for(var i in obj){
obj[i] = parseNum(obj[i])
}
return obj
}
}
}
解析:
本题考察的是数据类型的检测,使用typeof函数获得obj的名称,然后进行字符串比较。
在这个过程中,需要注意typeof null、Array、Function都会得到object
使用Array.isArray()以及(!obj && obj!==0 && typeof obj !== \'undefined\')分辨Array和Null
本问题参考文献:
https://developer.mozilla.org...
https://developer.mozilla.org...
2.编写一个函数mRead读取数组,要求记忆每次读取的进度
案例:
var c = [2,3,4,5,6,7,8,9,10]
var rea = mRead(c)
rea(1) //[2]
rea(1) //[3]
rea(2) //[4,5]
rea(-1.5) //[6]
答案:
function mRead(line){
var seen;
if(typeof seen === \'undefined\'){
seen = 0;
}
return function m(n){
if(n <1 || n%1!==0)
n = 1
var a = line.slice(seen,seen+n)
seen += n
return a
}
}
3.编写一个函数,要求不能声明任何外部函数;奇数次调用该函数时输出1,偶数次调用该函数输出2
let a = (function(){
let count = 1
return function(){
if(count % 2 !== 0){
console.log(1)
}
else{
console.log(2)
}
count++
}
})()
4.编写一个函数,返回指定位数的随机字符串
function randomString(str_len){
var ALPHABET = \'ABCDEFGHIJKLMNOPQRSTUVWXYZ\';
ALPHABET += \'abcdefghijklmnopqrstuvwxyz\';
ALPHABET += \'0123456789-_\';
var str = \'\';
let index = 0
for(let i = 0;i < str_len;i++){
let a = Math.random() * ALPHABET.length
index = Math.floor(a)
str += ALPHABET[index]
}
return str
}
let b= randomString(5)
console.log(b)
5.编写一个函数,要求实现add(1,2),add(1,2)(3),add(1,2)(23)(5)等不定参数的加减
function add2(){
let _args = Array.prototype.slice.call(arguments)
let _add2 = function(){
_args.push(...arguments)
return _add2
}
_add2.toString = function(){
let b = _args.reduce((x,y)=>{
return x+y
})
return b
}
return _add2
}
6.编写一个函数,对字符串中相应重复字符计数拼接后返回
例子:
let str = \'aabbbcdddeeeeee\'
let b = transformStr(str)//a2b3c1d3e6
let str = \'aabbbcdddeeeeee\'
function transformStr(str){
let line = str.match(/(\\w)\\1*/g)
let result = ""
for(let i = 0;i < line.length;i++){
result += line[i][0]
result += line[i].length
}
return result
}
let b = transformStr(str)
以上是关于增进JavaScript理解的题目的主要内容,如果未能解决你的问题,请参考以下文章
精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)