1、函数声明提前

1-1.函数声明提前

函数声明也会提前

  1. <script>
  2. /* 函数声明也会提前 */
  3. go();
  4. console.log(go);
  5. function go(){
  6. console.log("hello world");
  7. }
  8. go();
  9. </script>

image.png

1-2.function定义函数与变量

  • 在声明提前的情况下,在一个作用域中,function定义的函数名与变量名相同时,函数会覆盖变量

    1. <script>
    2. /*
    3. var num;
    4. var num = function(){
    5. console.log("hello world")
    6. }
    7. */
    8. console.log(num);//function
    9. /* tips:在声明提前的情况下,在一个作用域中,function定义的函数名与变量名相同时,函数会覆盖变量 */
    10. var num = 10; //num=10;
    11. function num(){ //使用function定义的函数会声明提前且覆盖同名变量
    12. console.log("hello world");
    13. }
    14. console.log(num);//10
    15. </script>

    image.png

    1. <script>
    2. /*
    3. var num;
    4. var num = function(){
    5. console.log("hello world")
    6. }
    7. */
    8. console.log(num);//undefined
    9. /* tips:在声明提前的情况下,在一个作用域中,function定义的函数名与变量名相同时,函数会覆盖变量 */
    10. var num = 10;
    11. var num = function(){
    12. console.log("hello world");
    13. }
    14. console.log(num); //function
    15. </script>

    image.png

    1-3.例题

    步骤:
    num(20);
    var a=20;
    var a=function(){};
    console.log(a); //输出function函数
    a=10;
    console.log(a); //输出数字10

    1. <script>
    2. function num(a){
    3. /*
    4. var a = function(){
    5. console.log("hello world")
    6. }
    7. */
    8. console.log(a); //function
    9. var a = 10
    10. function a(){
    11. console.log("hello world")
    12. }
    13. console.log(a) //10
    14. }
    15. num(20);
    16. </script>

    image.png

    2、数组

    2-1.数组的后删除

    .pop() //从后删除

    1. <script>
    2. var arr = [1,2,3]
    3. arr.pop(); //pop()从后删除
    4. console.log(arr)
    5. </script>

    image.png

    2-2.数组的前删除

    .shift() //从前删除

    1. <script>
    2. var arr = [2,3,4]
    3. arr.shift(); //shift()从前删除
    4. console.log(arr)
    5. </script>

    image.png

    2-3.数组的自定义删除

    splice(index,howmany)
    index —从哪个下标开始删除
    howmany —删除多少个
    **

    1. <script>
    2. var arr = [4,5,6,7,8];
    3. /* splice(index,howmany)
    4. index --从哪个下标开始删除
    5. howmany --删除多少个
    6. */
    7. arr.splice(2,1) //指定位置,多个删除
    8. console.log(arr)
    9. </script>

    image.png

    2-4.数组的修改

    splice(index,howmany,value)
    index —开始下标
    howmany —删除多少个
    value —替换的值

    1. <script>
    2. var arr = ["html","css","javascript"];
    3. /*
    4. splice(index,howmany,value)
    5. index --开始下标
    6. howmany --删除多少个
    7. value --替换的值
    8. */
    9. arr.splice(1,1,"vue");
    10. console.log(arr);
    11. </script>

    image.png

    2-5.splice方法增加

  • splice(index,0,value……)

  • splice 增加 从选定的下标的前面增加

    1. <script>
    2. /* splice 增加 从下标的前面增加 */
    3. var arr = [3,4,5,6,];
    4. /*
    5. splice(index,0,value……)
    6. */
    7. arr.splice(2,0,"html","css")
    8. console.log(arr);
    9. </script>

    image.png

    2-6.数组的查询

  • indexOf() //有值则返回数组下标 无值则返回-1

  • slice(startIndex,endIndex) //从开始下标开始截取至结束的下标并返回一个新的数组

(tips:不包含结束的下标)

  1. <script>
  2. /* indexOf
  3. -1
  4. */
  5. var arr = [2,3,4,5,6];
  6. console.log(arr.indexOf(8));
  7. console.log(arr.indexOf(3));
  8. var test = arr.slice(1,3)
  9. /* slice(startIndex,endIndex)
  10. tips:不包含结束的下标
  11. */
  12. console.log(test)
  13. </script>

image.png

2-7.includes方法查询

  • includes可以判断数组是否包含某个值

有则返回—true
无则返回—false

  1. <script>
  2. /*
  3. includes可以判断数组是否包含某个值
  4. */
  5. var arr = [4,5,6];
  6. console.log(arr.includes(5));
  7. console.log(arr.includes(8));
  8. </script>

image.png

3、算法示例

3-1.简单求和

求数组的总和:

  1. for循环遍历数组,累加

    1. <script>
    2. var arr = [1,2,3,4,5,8];
    3. /* */
    4. var sum = 0;
    5. for(var i=0;i<arr.length;i++){
    6. sum+=arr[i];
    7. }
    8. console.log(sum)
    9. </script>

    image.png

    3-2.选择过滤

    将年龄大于16的设置为一个数组:

    1. 定义一个新的空数组
    2. for循环遍历原数组
    3. 利用parseInt()抽出年龄对象的整数
    4. if判断年龄>16push至新数组

      1. <script>
      2. var arr = [
      3. {name:"李四",age:"18岁"},
      4. {name:"王四",age:"20岁"},
      5. {name:"张四",age:"8岁"},
      6. {name:"长四",age:"16岁"},
      7. ];
      8. var test = [];
      9. for(var i=0;i<arr.length;i++){
      10. console.log(arr[i])
      11. if(parseInt(arr[i].age)>16){
      12. test.push(arr[i])
      13. }
      14. }
      15. console.log(test)
      16. </script>

      image.png

      3-3.简单分组

      将数组中每三个元素分为一组:

    5. 定义一个新的空数组

    6. for循环遍历原数组
    7. 每次splice(0,3)删除并返回数组的前3位并push()给新数组

      1. <script>
      2. var arr = [1,2,3,4,5,6,7,8,9];
      3. var test = [];
      4. for(var i=0;i<arr.length;i++){
      5. console.log(i)
      6. test.push(arr.splice(0,3))
      7. }
      8. console.log(test)
      9. </script>

      image.png

      3-4.取最小值

      将数组中的最小值赋给新数组:

    8. 定义变量并给予赋值原数组[0]第一位

    9. for循环遍历原数组
    10. if判断当变量test大于数组[i]时,将数组[i]赋给变量test
    11. 输出test

      1. <script>
      2. var arr = [4,6,18,1,2,9,5];
      3. var test = arr[0];
      4. for(var i=0;i<arr.length;i++){
      5. if(test>arr[i]){
      6. test = arr[i];
      7. }
      8. }
      9. console.log(test);
      10. </script>

      image.png

      3-5.改变子元素对象并赋予新对象

      将数组中元素的age对象值翻倍并对age大于24的元素赋予新对象like为true,否则为false

    12. for循环遍历数组

    13. 利用parseInt()取出age对象中的整数*2并重新赋值给arr[i].age
    14. if判断新age是否大于24,如大于则赋予新对象.like = true,否则为false

      1. <script>
      2. var arr = [
      3. {name:"lisi",age:"12px"},
      4. {name:"wangwu",age:"13px"},
      5. {name:"zhangsan",age:"14px"},
      6. ]
      7. for(var i=0;i<arr.length;i++){
      8. var age = parseInt(arr[i].age)*2
      9. console.log(age);
      10. arr[i].age = age;
      11. if (parseInt(arr[i].age)>24) {
      12. arr[i].like = true;
      13. }else{
      14. arr[i].like = false
      15. }
      16. }
      17. console.log(arr)
      18. </script>

      image.png

      !3-6.简单关键字搜索

      设置一个简单的关键字搜索框:

    15. 定义一个新的test数组,获取input输入框

    16. 定义input键盘事件,当键盘值为13且输入框不为空时,获取输入框的值为keyword
    17. 将关键字作为参数遍历数组
    18. 先用一重for循环遍历每个首字母元素,再用一重for循环遍历首字母数组
    19. 利用citys[j].name.includes(keyword)判断是否含有关键字
    20. 将含有关键字的元素push()赋给新数组test
    21. 重新清空数组test

函数调用方法:

  1. <input type="text" id="input">
  2. <script>
  3. var searchs = [
  4. {
  5. spell:"A",
  6. citys:[
  7. {name:"阿里",id:1001},
  8. {name:"阿拉",id:1001},
  9. {name:"阿克",id:1001}
  10. ]
  11. },{
  12. spell:"T",
  13. citys:[
  14. {name:"天下",id:2001},
  15. {name:"天天",id:2002},
  16. {name:"天里",id:2003},
  17. ]
  18. }
  19. ]
  20. var test = [];()
  21. var input = document.getElementById("input");
  22. /* 1、获取关键字 */
  23. input.onkeydown = function(event){
  24. if(event.keyCode==13){
  25. if(this.value !=""){
  26. console.log(this.value)
  27. var kw = this.value.trim();
  28. /* 2、使用关键字对数组进行遍历 */
  29. addCitys(kw);
  30. console.log(test)
  31. test = [];
  32. }
  33. }
  34. }
  35. function addCitys(keyword){
  36. for(var i=0;i<searchs.length;i++){
  37. var citys = searchs[i].citys;
  38. for(var j=0;j<citys.length;j++){
  39. // console.log(citys[j])
  40. /* 3、获取包含关键字的项目 */
  41. if(citys[j].name.includes(keyword)){
  42. test.push(citys[j]);
  43. }
  44. }
  45. }
  46. }
  47. </script>

image.pngimage.png
原生方法:

  1. <script>
  2. var searchs = [
  3. {
  4. spell:"A",
  5. citys:[
  6. {name:"阿里",id:1001},
  7. {name:"阿拉",id:1001},
  8. {name:"阿克",id:1001}
  9. ]
  10. },{
  11. spell:"T",
  12. citys:[
  13. {name:"天下",id:2001},
  14. {name:"天天",id:2002},
  15. {name:"天里",id:2003},
  16. ]
  17. }
  18. ]
  19. var test = [];
  20. var input = document.getElementById("input");
  21. input.onkeydown = function(event){
  22. if(event.keyCode == 13){
  23. if(this.value != ""){
  24. var kw = this.value;
  25. for(var i=0;i<searchs.length;i++){
  26. var citys = searchs[i].citys;
  27. for(var j=0;j<citys.length;j++){
  28. if(citys[j].name.includes(kw)){
  29. test.push(citys[j]);
  30. }
  31. }
  32. }
  33. console.log(test);
  34. test = [];
  35. }
  36. }
  37. }
  38. </script>

4、去除字符串空格

trim()去除字符串前后尾的空格

  1. <script>
  2. /* trim()去除字符串前后尾的空格 */
  3. var str = " fdsf ";
  4. console.log(str.trim());
  5. </script>