Javascript基础3
1.数组
- 数组是一组数据类型
- 数组可以存储很多项,有顺序,很多项形成一个集合,这个集合就是数组Array;
- 数组的字面量就是[];
var Array = [];
- 如何获取数组中的数据
索引/下标 ,数组中的第一项的索引是从0开始;
var names = ['kk','wxf','ps','ps1'];
console.log(names[0]); //'kk'
console.log(names[1]); //'wxf'
console.log(names[2]); //'ps'
console.log(names[3]); //'ps1'
console.log(names[4]); //underfind
//动态插入/修改元素
names[0]='xxxx';
names[4] ='keke';
console.log(names[0]);
console.log(names[4]);
// 获取数组中的每一项 (遍历数组)
var names = ['kk','wxf','ps','ps1'];
for (var i = 0; i <= names.length; i++){
console.log(names[i]);
}
// 倒着获取数组中的每一项
var names = ['kk','wxf','ps','ps1'];
for (var i =names.length-1;i >=0 ;i--){
console.log(names[i]);
}
//给空数组添加值
var scrols = [];
console.log(scrols);
for(var i = 0;i<10;i++){
scrols[i] = i;
}
console.log(scrols);
//清空数组
var names = ['kk','wxf','ps','ps1'];
names.length = 0;
console.log(names);
- 求数组的和和平均值
var numbers = [35, 12, 35, 90, 11, 12];
var sum = 0; //定义和为0
var avg;
for(var i = 0; i < numbers.length; i++){
sum += numbers[i] //相加 sum = sum + numbers[i];
}
avg = sum / numbers.length;
console.log('数组中所有数的和'+sum);
console.log('数组中所有数的平均值'+avg);
- 求数组中的最大值和最小值
//方法1
var numbers = [35, 12, 35, 90, 11, 12];
var max = numbers[0];
var min = numbers[0];
var maxIndex = 0;
var minIndex = 0;
for (var i = 0;i < numbers.length; i++){
if(max < numbers[i]){
//把最大值赋给比较大的那个数
max = numbers[i];
maxIndex = i; //获取索引
}
if(min > numbers[i]){
min = numbers[i];
minIndex = i;
}
}
console.log('最大值'+max);
console.log('最大值的索引'+maxIndex);
console.log('最小值'+min);
console.log('最小值的索引'+minIndex);
//方法2
/* Math是js中的数学方法集合,applay上下文调用后面的课程会详讲;
Math.max(42,52)取2个值中的最大值 52
Math.min(42,33)取2个值中的最小值 33
Math.max.apply(null,arr) 取数组中的最大值
Math.min.apply(null,arr) 取数组中的最小值*/
var max1 = Math.max.apply(null,[12,234,45,678,1234,43]);
var min1 = Math.min.apply(null,[12,234,45,678,1234,43]);
console.log(max1);
console.log(min1)
- 分隔数组(字符串)
1.for循环
var names = ['王五','刘洋','天爸','杨洋','养养眼'];
// 定义一个变量等于数组的第一项
var sum = names[0];
//定义分隔符
var separator = '|';
//循环遍历拼接字符串和分隔符
for(var i = 1;i < names.length;i++){
sum += separator + names[i];
}
console.log(sum);
2.join() :用分隔符,组合数组,生成字符串
var names = ['王五','刘洋','天爸','杨洋','养养眼'];
console.log(names.join('|'));
- 筛选数组: 将数组中多余的部分去掉,重新组合
var nums = [12,0,13,34,0,67,0];
var Array = []
for(var i = 0; i< nums.length; i++){
if(nums[i]!==0){
// array[array.legth] = 1;
// array[0] = 1;
//将数字从新插入数组,Array.length相当于索引
Array[Array.length] = nums[i];
}
}
console.log(Array)
- 翻转数组:将数组的位置倒过来
var nums = [12,13,34,0,67];
var Array = [];
for (var i = nums.length-1;i >= 0;i--){
Array[Array.length] = nums[i]; //从后往前交换索引
}
console.log(Array);
- 冒泡排序
//冒泡排序,从小到大的排序
var numbers = [35, 12, 36, 90, 11, 18];
//控制趟数,每一次找到最大的那个数
for(var i = 0; i < numbers.length-1;i++){
//内层循环,控制比较的次数把最大的往后移,最小的往前移;
for(var j = 0; j< numbers.length-1-i;j++){
if(numbers[j] > numbers[j+1]){
var temp = numbers[j];
//交换
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
console.log(numbers)
2.函数:
把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用.
- 封装
- 一次封装多次调用;
- 手动调用;
1.函数的参数
- 函数的声明:可以在函数定义前调用
function 函数名sayHi(){
函数体
}
//调用函数
// 用函数名调用,可以多次调用
sayHi();
- 函数表达式:不可以在函数前调用
var sayHi(); = function(){
函数体
}
//调用函数
// 函数名
sayHi();
- 函数的形参和实参
形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。
//求1-n之间所有数的和
var sum = 0;
//n 形式参数
function getSum(n){
for(var i = 0;i <= n;i++){
sum += i
}
console.log(sum);
}
getSum(3);
//求n-m之间所有数额和
var sum1 = 0;
// n1 m 形式参数
function getSum1(n1,m){
for(var j = n1;j <= m;j++){
sum1 += j;
}
console.log(sum1);
}
getSum1(1,2);
3.函数的返回值
return 可以拿到函数的结果,返回函数的值
return跳出函数后面的代码不会执行
如果函数没有return则返回undefined;
若你不需要返回值,你直接调用函数即可,不需要用变量来接受它的返回值
console.log(fn()); //第一步调用函数; 第二步打印出来
//函数返回值的语法
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);