JS笔记1

234 阅读2分钟

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;
        }