1.arguments
// console.log(1);
// console.log(1,2);
// console.log(1,2,3);
// function sum(a,b) {
// return a + b
// }
// console.log(sum(1,2,3,4));
// 一般情况下,使用形参来接受实参的值
// 话可以使用arguments来接受实参
function log() {
// 伪数组 / 类数组
console.log(arguments);
console.log(arguments[0]);
console.log(arguments[1]);
// console.log(arguments[2]);
console.log(arguments.length);
}
log(1,2)
2.数组
// var a = 1 ;
// var b = 3 ;
// var c = 5 ;
// var d = 2 ;
// 数组:存储一组相同数据类型的数据
var arr = [1,3,5,,2] ;
console.log(arr);
// 数组下标 访问数组的值的方法:arr[index]
console.log(arr[0]);
// 数组的长度
console.log(arr.length);
console.log(arr[3]);
// var arr = ['a' , 'b' , 'c'] ;
// var arr = [1,2,'a','b',true] ; // 不太规范
3.数组的长度
var arr = [1,2,3] ;
console.log(arr[10]); // undefined
// [1,2,3,,,,,,,20]
// 实际上变相的加长了数组的长度
arr[10] = 20 ;
console.log(arr[10]);
console.log(arr.length); // 11
console.log(arr);
4.数组的声明
var arr = [1,2,3] // 字面量声明
//数组是一个对象
var arr = new Array(1,2,3) ; // 实例化一个对象 Array构造函数(用于创建对象的)
console.log(arr.length);
console.log(arr);
var a = 1 ; // 字面量声明
var b = new Number(2) ; // 实例化一个对象
console.log(a);
console.log(b);
var c = 'hello' ;
var d = new String('hello') ;
// 当Array只有一个参数的时候,表示数组的长度
var arr2 = new Array(10) ;
console.log(arr2);
// 声明一个空数组,向数组中追加值
var arr = [] ;
arr[0] = 'a' ;
arr[1] = 'b' ;
arr[2] = 'c' ;
arr[10] = 'f' ;
5.生成十个随机数存入数组
// 取不到max
function rand(min , max) {
return parseInt(Math.random() * (max - min) + min)
}
// 生成10个数,存入数组
// 生一个,存一个
// 创建一个空数组
var arr = [] ;
for(var i = 0 ; i < 10 ; i++) {
// arr[i] = rand(0,100) ;
arr[arr.length] = rand(0,100);
}
console.log(arr);
6.数组的遍历
数组的遍历
for 正常循环遍历
for in 遍历下标 主要是用于遍历对象(不适合数组)
for of 遍历值
// 遍历:读取数组中的每一个值
var arr = [1,2,3,4,,,,5] ;
// console.log(arr[0]);
// console.log(arr[1]);
// console.log(arr[2]);
// 循环遍历
// for(var i = 0 ; i < arr.length ; i++) {
// console.log(arr[i]);
// }
// for in 用于遍历对象的角标 -- bug(自动过滤掉空值)
// for(var i in arr) {
// console.log(arr[i]);
// }
// for of 遍历对象 的值
for(var v of arr) {
console.log(v);
}
7.存入10个数,求平均数
// 取不到max
function rand(min , max) {
return parseInt(Math.random() * (max - min) + min)
}
var arr = [] ;
// 抓10个数字,放进数组
// var n1 = rand(0,100) ;
// arr[0] = n1 ;
// var n2 = rand(0,100) ;
// arr[1] = n2 ;
// var n1 = rand(0,100) ;
// arr[2] = n1 ;
// var n1 = rand(0,100) ;
// arr[3] = n1 ;
// for(var i = 0 ; i < 10 ; i++) {
// // var n = rand(0,100) ;
// // arr[i] = n ;
// arr[i] = rand(0,100);
// }
// console.log(arr);
// 1-100存入数组
// var arr = [1,2,3,4,5,6,7.....]
var arr = [] ;
// arr[0] = 1 ;
// arr[1] = 2 ;
// ...
for(var i = 0 ; i < 100 ; i++) {
arr[i] = i + 1 ;
}
console.log(arr);
// 把数组中所有的数求和
var sum = 0 ;
// 遍历数组
for(var i in arr) {
sum += arr[i]
}
var res = sum / arr.length ;
console.log(res);
8.数组随机取值
封装函数:求数组中的平均数
参数,返回值
function averageArr(arr) {
// 数组中的所有数求和
var sum = 0 ;
// 遍历数组
for(var v of arr) {
sum += v
}
// 求平均数
return sum / arr.length
}
var arr = [] ;
for(var i = 0 ; i < 10 ; i++) {
// var n = rand(0,100) ;
// arr[i] = n;
// 每次赋值之后,数组的长度都会发生改变
arr[arr.length] = rand(0,100) ;
}
console.log(arr);
var res = averageArr(arr) ;
console.log(res);
// 从数组中随机取一个值
function randOneArr(arr) {
// 取值是通过下角标取的
// 随机取值 -> 随机下标 -> 0-length
var i = rand(0,arr.length) ;
return arr[i]
}
var res = randOneArr([1,2,3,4,5,11,7,8,8,9])
console.log(res);
9.随机验证码
var arr = ['a','b','c','d','e','f','A','B','C','E','1','2','3','4'];
var res = '' ;
for(var i = 0 ; i < 4 ; i++) {
// var j = rand(0,arr.length) ;
// var v = arr[j] ;
// res += v;
res += arr[rand(0,arr.length)] ;
}
console.log(res);
10.找到数组中最大的值
找到数组中的最大值
一一比较
假设第一个值最大
9 8 6 3 1
假设第一个值最大 max = 9 ;
9 8 比较 9
// 假设第一个值最大
var max = arr[0] ;
// 拿他和后面的所有数比较
for(var i = 1 ; i < arr.length ; i++) {
// 如果这个数比后面的数要小
if(max < arr[i]) {
// max 只存储最大的那个数
max = arr[i]
}
}
console.log(max);
将它封装起来
function maxArr(arr) {
// var arr = [6,3,2,11 , 34,8] ;
// 假设第一个值最大
var max = arr[0] ;
// 拿他和后面的所有数比较
for(var i = 1 ; i < arr.length ; i++) {
// 如果这个数比后面的数要小
if(max < arr[i]) {
// max 只存储最大的那个数
max = arr[i]
}
}
console.log(max);
return max
}
11.找到数组中是否存在某个数
找到数组中是否存在某个值
把要找的这个值与数组中的每一个值作比较
var arr = [1,2,3,4,5] ;
// 因为找到他存在的证据很容易
var flag = false ;
// 遍历数组
for(var v of arr) {
if(22 === v) {
// alert('存在')
flag = true ;
}
}
// 比较结束以后,才能说找不到
alert(flag)
封装起来
function includes(arr , n) {
// 因为找到他存在的证据很容易
// var flag = false ;
// 遍历数组
for(var v of arr) {
if(n === v) {
// alert('存在')
// flag = true ;
// 如果已经找到了就不需要继续找
// break ;
return true
}
}
// 比较结束以后,才能说找不到
// return flag
return false
}
var res = includes([1,2,3,4] , 12)
console.log(res);
12.数组拼接成字符串
把数组中的值拼接成字符串 [1,2,3,4] -> 1,2,3,4
思路:把数组中的每一个值拼接到字符串中
var arr = [1,2,3,4];
var res = '' ;
// for(var i in arr) {
// // 最后一个不加逗号
// console.log(i); // for in 一般用于遍历对象,字符串
// if(i == arr.length - 1) {
// res += arr[i]
// } else {
// res += arr[i] + ','
// }
// }
// 一般,数组的遍历直接使用for循环
// for(var i = 0 ; i < arr.length ; i++) {
// // 最后一个不加逗号
// console.log(i); // 字符串
// res += i < arr.length - 1 ? arr[i] + ',' : arr[i]
// }
// console.log(res);
function join(arr , f) {
for(var i = 0 ; i < arr.length ; i++) {
// 最后一个不加逗号
// console.log(i); // 字符串
res += i < arr.length - 1 ? arr[i] + f : arr[i]
}
console.log(res);
return res
}
join([1,2,3,4] , '')
13.冒泡排序
// 数组中的值从小到大排序
var arr = [8,5,3,2,1] ;
// 思路
// 第一轮 拿到最大值放在最后面
// 8 5 5 8 3 2 1
// 8 3 5 3 8 2 1
// 8 2 5 3 2 8 1
// 8 1 5 3 2 1 8
// 第二轮 拿到第二大的值放在倒数第二个
// 5 3 3 5 2 1 8
// 5 2 3 2 5 1 8
// 5 1 3 2 1 5 8
// 5 8 3 2 1 5 8 多余的一次
// 第三轮
// 3 2 2 3 1 5 8
// 3 1 2 1 3 5 8
// 3 5 多余两次
// 5 8
// 第四轮
// 2 1 1 2 3 5 8
// 2 3 多余三次
// 3 5
// 5 8
// 比较的轮数
for(var j = 0 ; j < arr.length - 1 ; j++) {
// 每两个相邻的值做比较
for(var i = 0 ; i < arr.length - 1 - j ; i++) {
// 前面的比后面的大,就交换
if(arr[i] > arr[i + 1]) {
var t = arr[i] ;
arr[i] = arr[i + 1] ;
arr[i + 1] = t ;
}
}
// 每一轮拿到一次最大值
console.log(arr);
}
console.log(arr);
14.选择排序
var arr = [8,5,3,2,1] ;
// 第一轮
// 先找到最小值,再和第一个位置进行交换
// 假设第一个位置上的数最小
var min = 0 ;
// 拿第一个位置上的数与后面的所有值作比较
for(var i = 1 ; i < arr.length ; i++) {
if(arr[min] > arr[i]) {
min = i ;
}
}
console.log(min);
// 拿到最小值以后,与第一个位置上的值交换
var t = arr[0] ;
arr[0] = arr[min] ;
arr[min] = t ;
// 1 5 3 2 8
// 第二轮
// 假设第二个位置上的数最小
var min = 1 ;
for(var i = 2 ; i < arr.length ; i++) {
if(arr[min] > arr[i]) {
min = i
}
}
console.log(min);
// 拿到最小值以后,与第一个位置上的值交换
var t = arr[1] ;
arr[1] = arr[min] ;
arr[min] = t ;
// 1 2 3 5 8
// 第三轮
// 假设第三个位置上的数最小
// 第四轮
var arr = [1,4,2,7,3,6];
for(var i = 0 ; i < arr.length - 1 ; i++) {
// 假设第i个位置上的数是最小的
var min = i ;
// 拿这个最小的值和后面所有的数进行比较
for(var j = i + 1 ; j < arr.length ; j++) {
// min对应的数比后面的数大
if(arr[min] > arr[j]) {
min = j
}
}
console.log(min);
// 拿到最小值以后,与第一个位置上的值交换
if(min !== i) {
var t = arr[i] ;
arr[i] = arr[min] ;
arr[min] = t ;
}
}
console.log(arr);
15.数组的基本方法
// push(v1,v2,v3...) 向数组尾部追加值
// pop() 在数组尾部删除一个值
// unshift() 向数组的头部追加值
// shift() 向数组的头部删除一个值
var arr = [1,2,3] ;
// arr[3] = 'a' ;
arr.push('a' , 'b' , 'c') ;
console.log(arr);
arr.pop() ;
console.log(arr);
arr.unshift('hello' , 'hi');
console.log(arr);
arr.shift();
console.log(arr);
var arr2 = [] ;
for(var i = 0 ; i <= 10 ; i++) {
// arr2[i] = i
arr2.push(i)
}
console.log(arr2);
16.push封装
// 向一个数组中追加数据
// var arr = [1,2,3,4] ;
// arr[arr.length] = 'hello' ;
// console.log(arr);
// function push(n , n2 , n3) {
// var arr = [1,2,3,4] ;
// arr[arr.length] = n ;
// arr[arr.length] = n2 ;
// arr[arr.length] = n3 ;
// console.log(arr);
// }
function push() {
var arr = [1,2,3,4] ;
// 用于接受实参列表 --- 伪数组
console.log(arguments);
for(var i = 0 ; i < arguments.length ; i++) {
console.log(arguments[i]);
arr[arr.length] = arguments[i]
}
console.log(arr);
}
push('a','b','h' ,'t')
17.pop封装
// 删除数组中的最后一个值
function pop() {
var arr = [1,2,3,4,5] ;
var arr2 = [] ;
for(var i = 0 ; i < arr.length - 1 ; i++) {
arr2.push(arr[i])
}
console.log(arr2);
}
pop()