day 03函数&&数组

一丶实参与形参个数不匹配问题

image.png
如getSum(sum1,sum2){…}
getSum(1) 结果为 NaN
getSum(1,2) 正确结果
getSum(1,2,3) 正常结果

二丶push()丶pop()函数

arr.push(‘a’,‘b’) :在数组arr后面添加字符’a’,‘b’
arr.pop() :移除末尾的元素并返回移除的元素

三丶reverse()函数

reverse函数可以反转数组

var arr = [1, 2, 3, 4, 5, 6];
        arr.reverse();
        console.log(arr);

四丶函数声明的两种方式

image.png
??匿名函数可以直接传递返回值做为函数的实参,普通函数作为实参传递的是一整个函数而不是返回值

五丶for…in 遍历

var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 89, 10);
        for (var i in arr) {
            console.log(arr[i]);
        }

兔子繁殖

// 练习: 兔子繁殖问题
        /* function getSum() {
            var arr = new Array(arguments.length);
            //数组arr中的索引+1代表一只兔子发育了多少个月, arr中的值代表发育到此阶段的兔子个数
            var arr2 = [];
            var count = 0;
            var sum = 0;  //纪录一个阶段的兔子总数  每4个月为一个阶段
            //将实参作为每个阶段的兔子个数
            for (var i = 0; i < arguments.length; i++) {
                arr[i] = arguments[i];
                // console.log(arr[i]);
            }
            // 外层嵌套:循环次数为阶段个数 如题4个月为一个阶段20个月那么有5个阶段
            for (var j = 0; j < 5; j++) {
                //一个阶段内不同层次的兔子个数变化
                for (var i = 0; i < arguments.length; i++) {
                    //将变化前的数组纪录下来
                    for (var i1 in arr) {
                        arr2[i1] = arr[i1];
                    }
                    //将纪录的数组与将要变化的数组进行数据变化
                    arr[1] = arr2[0];
                    arr[2] = arr2[1];
                    arr[3] += arr2[2];
                    arr[0] = arr[3];
                    console.log(arr);
                }
                // 将变化后的数值累加并输出
                for (var j2 in arr) {
                    sum += arr[j2];
                }
                console.log('第' + (4 * (j + 1)) + '个月有' + sum + '只兔子');
            }
        }
        getSum(1, 0, 0, 0); */

	//第二种方法(递归)
        /* function rabbit(n) {
            if (n < 4) {
                return 1;
            }
            return rabbit(n - 1) + rabbit(n - 3);
        }
        for (var i = 1; i <= 20; i++) {
            console.log("第" + i + '个月: ' + rabbit(i));
        } */

六丶confirm函数

var str = confirm(‘确定要删除吗’);
console.log(str);

七丶sort函数

从小到大排序

sort()详解 : 
     sort 方法的默认排序在数字排序上有些问题,因为数字排序和数字字符串排序的算法是一样的。我们必须修改这一特征,修改的方式,就是给 sort(参数)方法传递一个函数参数。

 //如果一定要使用sort()进行排序, 可以传递一个函数
      function compare (value1, value2) {
	if (value1 <= value2) {
	        return -1;  //返回0和-1, 表示不交换值
	}
	return 1;   //返回1, 表示会交换值
      }
      var box = [0, 1, 5, 10, 15];
      var aseBox = box.sort(compare);   //返回升序的数组

sort函数的排序bug:
例如 1,15,3
他会将15当成字符串’1’来处理
使得排序结果为1,15,3而不是1,3,15

八:concat函数

concat() : 追加数据, 创建一个新数组, 不改变原数组
      var arr = [2, 3, 4, ‘绿箭侠’, ‘黑寡妇’];
      var arr2 = arr.concat(‘美队’, ‘雷神’);
      console.log(arr);
      console.log(arr2); 

九:slice函数

slice() :  不修改原数组, 将原数组中的指定区域数据提取出来
      var arr = [2, 3, 4, "绿巨人"];
      var arr2 = arr.slice(1, 3);  //并没有修改原数组,将原数组中的元素提取出来,生成新数组, 取的是下标在区域: [1,3)
      console.log(arr);
      console.log(arr2);

十:splice函数

splice() : 截取原数组中指定的数据, 会改变原数组
      var arr = [2, 3, 4, '绿箭侠', '黑寡妇'];
      var arr2 = arr.splice(2, 1);   //第一个参数代表我要开始截取的下标位置
			         //第二个参数截取的长度, 如果只有两个参数, 则表示删除操作
      console.log(arr);     //[2, 3, '绿箭侠', '黑寡妇'];
      console.log(arr2);   //4

splice() 详解: 
插入: 如果有3个或以上参数,且第二个参数(长度)0,则表示插入
      arr.splice(1, 0, “绿巨人”, “冬兵”); //在下标为1的位置插入: "绿巨人","冬兵"

替换: 如果有3个或以上的参数, 且第二个参数(长度)不为0, 则表示替换
      arr.splice(1, 1, “绿巨人”, “冬兵”);  //在下标为1的位置替换成: "绿巨人","冬兵"
	
删除: 如果只有两个参数, 则表示删除指定区域的数据
      arr.splice(0, 2);  //删除原数组的部分数据, 并返回截取的数据

join() : 连接数组中的元素, 并返回连接后的字符串, 不传参则以逗号连接
       arr.join(+);

十一:shift函数

shift(): 方法从数组前端移除一个元素,
移除数组开头元素,并返回移除的元素
        console.log(arr.shift());

十二:unshift函数

unshift(): 方法从数组前端添加一个或多个元素。
数组开头添加两个元素
        console.log(arr.unshift(‘广东’,‘深圳'));


十三:整合

一:对数组前段操作:

(1)unshift():从数组前端添加一个或多个元素
用法:

数组开头添加两个元素
        console.log(arr.unshift(‘广东’,‘深圳'));

(2)shift():从数组前端移除一个元素
用法:

  移除数组开头元素,并返回移除的元素
        console.log(arr.shift());

二:对数组后段操作:

(1):push():接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度;
用法:

数组末尾添加一个元素,并且返回长度
       console.log(arr.push(‘张家界')); 

(2)pop():从数组末尾移除最后一个元素,减少数组的 length 值,然后返回移除的元素;
用法:

移除数组末尾元素,并返回移除的元素
       var b = arr.pop();

(3):concat():追加数据,创建一个新数组,不改变原数组
用法:

concat() : 追加数据, 创建一个新数组, 不改变原数组
      var arr = [2, 3, 4, ‘绿箭侠’, ‘黑寡妇’];
      var arr2 = arr.concat(‘美队’, ‘雷神’);
      console.log(arr);
      console.log(arr2); 

三:提取任意位置

(1)slice():不修改原数组,将原数组中的指定区域数据提取出来
用法:

slice() :  不修改原数组, 将原数组中的指定区域数据提取出来
      var arr = [2, 3, 4, "绿巨人"];
      var arr2 = arr.slice(1, 3);  //并没有修改原数组,将原数组中的元素提取出来,生成新数组, 取的是下标在区域: [1,3)
      console.log(arr);
      console.log(arr2);

(2)splice():截取原数组中指定的数据,会改变原数组
用法:

splice() : 截取原数组中指定的数据, 会改变原数组
      var arr = [2, 3, 4, '绿箭侠', '黑寡妇'];
      var arr2 = arr.splice(2, 1);   //第一个参数代表我要开始截取的下标位置
			         //第二个参数截取的长度, 如果只有两个参数, 则表示删除操作
      console.log(arr);     //[2, 3, '绿箭侠', '黑寡妇'];
      console.log(arr2);   //4

用法2:

splice() 详解: 
插入: 如果有3个或以上参数,且第二个参数(长度)0,则表示插入
      arr.splice(1, 0, “绿巨人”, “冬兵”); //在下标为1的位置插入: "绿巨人","冬兵"

替换: 如果有3个或以上的参数, 且第二个参数(长度)不为0, 则表示替换
      arr.splice(1, 1, “绿巨人”, “冬兵”);  //在下标为1的位置替换成: "绿巨人","冬兵"
	
删除: 如果只有两个参数, 则表示删除指定区域的数据
      arr.splice(0, 2);  //删除原数组的部分数据, 并返回截取的数据

join() : 连接数组中的元素, 并返回连接后的字符串, 不传参则以逗号连接
       arr.join(+);

(3)join():链接组中的元素,并返回连接后的字符串,不传参则以逗号连接

arr.join(+);

原数组的变化

(1)改变原数组

push:改变原数组 返回新数组的长度
unshift:改变原数组 返回新数组长度
pop:改变原数组 返回删除的元素
shift:改变原数组 返回删除的元素
splice:截取原数组中指定的数据,会改变原数组

(2)不改变原数组

reverse:改变原数组 新数组
concat:不改变原数组 追加数据 返回新数组
slice:不修改原数组,将原数组中的指定区域数据提取出来

十四:类二维数组

// 练习七 给定两个升序整型数组a和b,打印其共同元素,
        // 比如:a = [0, 1, 2, 3, 4],b = [1, 3, 5, 7, 9],输出 1, 3
        var arr1 = [0, 1, 2, 3, 4], arr2 = [1, 3, 5, 7, 9];
        function getSum(arr1, arr2) {
            var arr3 = [], k = 0;
            for (var i = 0; i < arguments[0].length; i++) {
                for (var j = 0; j < arguments[1].length; j++) {
                    if (arguments[0][i] == arguments[1][j]) {
                        arr3[k] = arguments[0][i];
                        k++;
                    }
                }
            }
            return arr3;
        }
        console.log(getSum(arr1, arr2));

十五:i判断是否为数组

(1):instanceof
运算符:可以用它来检测是否为数组
console.log(arr2 instanceof Array);
(2):Array.isArray();
用法:
console.log(Array.isArray(arr));

indexOf函数

给出指定元素的第一个索引 若无此元素返回负一;

lastindexOf函数

给出指定元素的最后一个索引,若无此元素返回负一


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值