一道JavaScript笔试题的思考
题目是这样的:
写一函数,输入1时候,输出2,输入2时候,输出1
这题目很简单,也许答案很快就出来了:
function f(n){
if(n == 1) return 2;
if(n == 2) return 1;
}
非常正确,有更好的方法吗——上面的方法太“平庸”了,看上去好像“没水准”,而且如果很多输入项的话……
更巧妙的方法:
function f(n){
return [ , 2, 1][n]; //前面的[]是数组,后面的[n]是下标
}
“巧妙”在哪里呢?
比如题目改一下:
写一函数,按照如下表输出
//输入 输出
111 252
225 514
789 554
999 558
//略去N项
这样一来,用第一种方法,得写N+4个if语句……
同样上面的“妙招”也不好使了,得写999 - 1个逗号- -|||
你想到对策了吗?
View Code
//答案是用JSON
function f(input){
return ({
'111':'252',
'225':'514',
'789':'554',
'999':'558'
/*略去N项*/
})[input];
}
//另,如果输入项是字符串,比如'haha' 'heihei',也是用JSON来解决
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架