1、已知两个矩形,宽高分别是200*200,400*400,甲矩形的坐标是x1,y1.乙矩形的坐标是x2,y2.判断两个矩形是否相撞.
A、转化成了考虑一个点是不是在另一个矩形里面
<script>
// 判断两个矩形是否相撞
var x1 = 740, y1 = 70, x2 = 200, y2 = 500;
var bool = false;
if (x1 >= x2 && x1 <= x2 + 400 && y1 <= y2 && y1 >= y2 + 400)
bool = true;
else if (x1 + 200 >= x2 && x1 + 200 <= x2 + 400 && y1 <= y2 && y1 >= y2 + 400)
bool = true;
else if ( x1 + 200 >= x2 && x1 + 200 <= x2 + 400 && y1 + 200 <= y2 && y1 + 200 >= y2 + 400 )
bool = true;
else if (x1 >= x2 && x1 <= x2 + 400 && y1 + 200 <= y2 && y1 + 200 >= y2 + 400 )
bool = true;
if (bool) console.log("碰撞了");
else console.log("没有碰撞嘞");
</script>
B、通过XY轴来确定
const isOverlap = (rect1, rect2) => {
const l1 = { x: rect1.x, y: rect1.y }
const r1 = { x: rect1.x + rect1.width, y: rect1.y + rect1.height }
const l2 = { x: rect2.x, y: rect2.y }
const r2 = { x: rect2.x + rect2.width, y: rect2.y + rect2.height }
if ( l1.x > r2.x ||l2.x > r1.x || l1.y > r2.y || l2.y > r1.y)
return false
return true
}
2、判断三个数字的大小,按顺序输出
A、直接比较
var a = Number(prompt("请输入第一个数字"));
var b = Number(prompt("请输入第二个数字"));
var c = Number(prompt("请输入第三个数字"));
if (!isNaN(a) && !isNaN(b) && !isNaN(c)) {
abcPaiXu(a, b, c);
}
function abcPaiXu(a, b, c) {
if (a >= b) {
if (b >= c) console.log(c, b, a);
else if (a >= c) console.log(b, c, a);
else console(b, a, c);
} else {
if (a >= c) console.log(c, a, b);
else if (b >= c) console.log(a, c, b);
else console.log(a, b, c);
}
}
B、借助数据结构,调用方法
var a =1,b=2,c=3,d=[];
d.push(a);
d.push(b);
d.push(c);
d.sort();
for(var i in d){
alert(i);
3、打印100-999的水仙花数
A、根据定义
var ib, is, ig, sum;
for (var i = 100; i < 1000; i++) {
ib = parseInt(i / 100);
is = parseInt(i / 10) % 10;
ig = i % 10;
sum = ib * ib * ib + ig * ig * ig + is * is * is;
if (i === sum) console.log("水仙花数:" + i);
}
B、双重循环,利用字符串
var str_i, sum;
for (var i = 100; i < 1000; i++) {
str_i = i.toString();
for (var j = 0; j < 3; j++) {
sum += str_i.charAt(j) * str_i.charAt(j) * str_i.charAt(j);
}
if (sum === i) console.log("水仙花数:" + i);
sum = 0;
}