题目一.a和b两个变量,不用第三个变量来切换两个变量值
var a=5;
var b=6;
a=a+b;
b=a-b;
a=a-b;
alert(a);
alert(b);
题目二.有一个数n=5,不用for循环,怎样返回[1,2,3,4,5]这样的数组
方法一.用递归来进行遍历
var n=5;
function show(){
var arr=[];
return (function(){
arr.unshift(n);
n--;
if(n!=0){
arguments.callee();
}
return arr;
})();
}
alert(show(n));
方法二.用正则来匹配模拟次数
var n=5;
var arr=[];
arr.length=n+1;
var arr2=[];
var str=arr.join("a"); 中间连接符用a,要六个数才五个逗号,所以length=n+1
var re=/a/g;
str.replace(re,function(){
arr2.unshift(n--);
});
alert(arr2);
题目三.一个数n,当n<100就返回n,否则返回100,但是不能用if else、三目、switch等
方法一.Math.min
var n=150;
function show(){
return Math.min(n,100);
}
alert(show(n));
方法二.用数组排序
var n=50;
function show(){
var arr=[n,100];
arr.sort();
return arr[0];
}
alert(show(n));
方法三.根据数字转字符串后的长度判断,用到for循环,如果长度小于3,就返回自身,大于等于3就返回100
var n=150;
function show(){
var str="n";
for(;str.length<3;){
return n;
}
for(;str.length>=3;){
return 100;
}
}
alert(show(n));
方法四.json
var n=50;
function show(){
var json={};
var m=n<100||json; //m是布尔值
for(var attr in m){
return 100;
}
return n;
}
alert(show(n));