一丶实参与形参个数不匹配问题
如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);
四丶函数声明的两种方式
??匿名函数可以直接传递返回值
做为函数的实参,普通函数作为实参传递的是一整个函数
而不是返回值
五丶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函数
给出指定元素的最后一个索引,若无此元素返回负一