Mr.Xu:基础基础基础

1.script为什么放在body下边

加载顺序是从上到下的,js要操作dom元素,所以要等dom先加载完后再去操作

2.dom的获取(h5)

//根据id选择(一般id不会重复使用)
document.querySelector('#dv');

//由于class 是用来批量操作的,所以对于批量的东西批量去选中,所以根据class来选择元素用这种方式
document.querySelectorAll('.dv');

3.绑定事件

//当script标签放在body标签前面的时候,获取元素,js事件必须放在加载事件window.onload中
window.onload = function(){
  var a = document.querySelectorAll('.dv');
  a.forEach(function(element){
    element.onclick = function(){
      console.log(123)
      }
    })
  }

//当script标签放在body下面的时候,绑定事件可以不用加window.onload
var a = document.querySelector('#dv');
a.onclick = function(){
  console.log(111)
}



4.写一个方法,返回一个数组,数组中给每个人的年龄都+1

var arr = [{
    name: 'AA',
    age: 18,
    height: '158'
  }, {
    name: 'BB',
    age: 19,
    height: '158'
  }, {
    name: 'CC',
    age: 20,
    height: '159'
  }, {
    name: 'DD',
    age: 38,
    height: '178'
  }, {
    name: 'EE',
    age: 28,
    height: '168'
  }]

  function res(arr) {
    var newArr = [];
    arr.forEach(item => {
      var obj = {}
      obj.name = item.name;
      obj.age = item.age + 1;
      obj.height = item.height;
      newArr.push(obj)
    })
    return newArr;
  }
  console.log(res(arr));
  console.log(arr);

5.写一个方法传个数组进去,如果长度比6大就去掉一个,如果比6小就添加一个,补够6个

    function res(arr) {
      if (arr.length < 6) {
        arr.push(1);
        res(arr);
      } else if (arr.length > 6) {
        arr.pop();
        res(arr);
      } else if (arr.length == 6) {
        return arr;
      }
    }
    var arr = [2, 9, 0, 0, 9, 8, 7, 0];
    res(arr);
    console.log(arr);

6.把年龄相同的放到一个数组里

var arr = [{
      age: 12
    }, {
      age: 22
    }, {
      age: 29
    }, {
      age: 22
    }, {
      age: 12
    }, {
      age: 39
    }, {
      age: 12
    }];

    function res(arr) {
      var o = {};
      for (var i = 0; i < arr.length; i++) {
        var item = arr[i];
        if (o[item.age]) {
          o[item.age].push(item);
        } else {
          o[item.age] = [item];
        }
      }
      console.log(o);
    }
    res(arr);

7.合并两个数组对象中id一样的对象

var arr1 = [{
    name: 'vivi',
    id: 1
  }, {
    name: 'bibi',
    id: 2
  }, {
    name: 'titi',
    id: 3
  }]
  var arr2 = [{
    id: 1,
    age: 18

  }, {
    id: 2,
    age: 19
  }, {
    id: 3,
    age: 20
  }]
  var newArr = [];

  function res(arr1, arr2) {
    for (var i = 0; i < arr1.length; i++) {
      for (var j = 0; j < arr2.length; j++) {
        if (arr1[i].id === arr2[j].id) {
          var obj = {};
          obj.name = arr1[i].name
          obj.age = arr2[i].age
          obj.id = arr1[i].id
          newArr.push(obj)
        }
      }
    }
    console.log(newArr)
  }
  res(arr1, arr2)

8.判断一个数是否是质数

  function isZhishu(num) {
    if (num != 1 && num % 2 === 0) {
      console.log('质数')
    } else {
      console.log('不是质数')
    }
  }
  isZhishu(9)

9.求斐波那契数列Fibonacci中的第n个数是多少?1 1 2 3 5 8 13 21...

 function getFib(n) {
    var n1 = 1;
    var n2 = 1;
    var n3;
    for (var i = 3; i <= n; i++) {
      n3 = n1 + n2;
      n1 = n2;
      n2 = n3;
    }
    return n3;
  }
  var r = getFib(6);
  console.log(r);

10.求数组中的最大值和最小值,以及所在的位置

 var arr = [1, 2, 3, 4, 0, 9];
  var max = arr[0];
  var min = arr[0];
  var maxIndex = 0;
  var minIndex = 0;
  arr.forEach((item, index) => {
    if (max < item) {
      max = item;
      maxIndex = index;
    }
    if (min > item) {
      min = item;
      minIndex = index
    }
  })
  console.log(max, maxIndex);
  console.log(min, minIndex);