限制条件补全代码系列题

题目一.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));

 

转载于:https://www.cnblogs.com/zhangwenkan/p/4248729.html

你可能感兴趣的:(限制条件补全代码系列题)