一道JavaScript笔试题的思考
来源:广州中睿信息技术有限公司官网
发布时间:2012/10/21 23:25:16 编辑:admin 阅读 461
题目是这样的:写一函数,输入1时候,输出2,输入2时候,输出1这题目很简单,也许答案很快就出来了:functionf(n){if(n==1)return2if(n==2)return1}非常正确,有

题目是这样的:

写一函数,输入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来解决

http://www.cn09.com/thread-179-1-1.html

一道JavaScript笔试题的思考

作者:阿良
出处:http://www.cnblogs.com/arliang 本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议
进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

联系我们CONTACT 扫一扫
愿景:成为最专业的软件研发服务领航者
中睿信息技术有限公司 广州•深圳 Tel:020-38931912 务实 Pragmatic
广州:广州市天河区翰景路1号金星大厦18层中睿信息 Fax:020-38931912 专业 Professional
深圳:深圳市福田区车公庙有色金属大厦509~510 Tel:0755-25855012 诚信 Integrity
所有权声明:PMI, PMP, Project Management Professional, PMI-ACP, PMI-PBA和PMBOK是项目管理协会(Project Management Institute, Inc.)的注册标志。
版权所有:广州中睿信息技术有限公司 粤ICP备13082838号-2