建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

一道简单JavaScript笔试题引发的思考

时间:2011-07-24 09:07来源: 作者: 点击:
题目要求写一函数,输入1时候,输出2,输入2时候,输出1 这题目很简单,也许答案很快就出来了: function f(n){ if(n == 1) return 2; if(n == 2) return 1; } 非常正确,有更好的方法吗——上面的方法太“平庸”了,看上去好像“没水准&r
题目要求写一函数,输入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个逗号- -|||
你想到对策了吗?

//答案是用JSON
function f(input){
return ({
'111':'252',
'225':'514',
'789':'554',
'999':'558'
/*略去N项*/
})[input];
}
//另,如果输入项是字符串,比如'haha' 'heihei',也是用JSON来解决
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片