继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Kevin带你飞(5): JavaScript-数组

凯文欧巴iii
关注TA
已关注
手记 13
粉丝 14
获赞 214

还是在学习数组之前,先思考一个小问题。
问题:现有如下运算功能,传入两个数,返回+-
/四种运算的值(不是字符串),怎么做?

function calculate(num1,num2){
    var sum = num1 + num2;
    var minus = num1 - num2;
    var product= num1 * num2;
    var divide = num1 / num2;
    return ?
        }

思路
能不能定义一个盒子,把结果都放到这个盒子里面,然后返回盒子呢?

var box = 盒子;
    把(num1+num2)的值放入盒子
    把(num1-num2)的值放入盒子
    ...
    return 盒子

1.为什么使用数组

当我们需要表示一组数据,或者叫做一次性定义很多相似的数字或变量时,就需要使用数组,如:表示一个班级学生的成绩, 一年十二个月的销售数据等等。


2.什么是数组?

---数组的字面意思就是一组数,一组(一般情况下相同类型)的数据(不一定都是数字)
---数组是一种数据类型。
---数组是一种数据类型。

*数组的作用是:使用单独的变量名来存储一系列的值。


3.怎么定义数组
var arr1 = new Array(); 
var arr2 = new Array(10); //包含 10 个元素的数组
var arr3 = new Array('凯文',24 ,'程序猿','西安');
var arr4 = [];
var arr5 = [1,2,3,4,5];

4.怎么使用数组(1)?

数组里面每一个盒子地址是连续的,每个盒子都有一个编号,从0开始
每个地址的编号我们称为数组的下标
使用数组下标访问数组元素
数组名字[数组下标]

var arr = ['a','b','c'];  //从'a'的盒子开始编号,开始为0,'b'->1,'c'->2
console.log(arr[1]);

下标就是索引,即元素的序号,从0开始,下标最大取值是:数组的长度(length) -1;
下标可以是变量或表达式。


5.数组的赋值

给数组赋值,就是给数组的元素赋值,需要通过给数组的每个元素一一赋值。
如:

arr[0] = 20;//让数组的第一个元素的值为20;
arr[1] = 12;//让数组的第二个元素的值为12;

//以下为通过循环给数组的每个元素赋值,赋成下标的平方。
for(var i=0;i<10;i++){
    arr[i] = i*i
}

//以下为通过循环给数组的每个元素赋值,随机数。
for(var i=0;i<10;i++){
    arr[i] = Math.random();
}

6.怎么使用数组(2)?

不能一次使用整个数组,使用数组就是在使用数组的每个元素,因为数组相当于若干个相同类型的变量。

遍历数组:从数组的第一个元素开始找到最后一个
var arr = [1,2,3,4,5];
数组的长度: 使用长度属性 var length = arr.length

//遍历方法    普通for循环:

for(var i=0; i<length; i++){
    console.log(arr[i]);
}   
// for in组合   i是数组的编号(arr是数组)   
for(var i in arr){
    console.log(arr[i]);
}   

(数组初体验):怎么把1、2...100放到数组中?

var numArr = [];    //new Array()
for(var i=0; i<100; i++){
    numArr[i] = i+1;
}
console.log(numArr);

(继续体验):计算[1,2,...,100]的和?

var sum = 0;
for(var z=0; z<numArr.length; z++){
    sum += numArr[z];
}
console.log(sum);

(体验升级):找出所有1-100之间7的倍数和包含7的数字

function getNum(){
    var count = 0;
    var numArr = [];//new Array()
    for(var i=1; i<=100; i++){
        if(i%7 == 0  i%10 == 7  (i/10 > 7 && i/10 < 8)){
            numArr[count] = i;
            count++;
        }
    }
    return numArr;
}
alert(getNum());

7.push / pop

push:在数组最后添加一个或者多个元素(数组变大),返回添加后数组的长度(arr.length)

var family = ['laoba','laoma'];  family.push('哥哥');

pop:从数组最后取出一个元素(数组变小),返回的是数组的最后一个元素(取出的元素)

var family = ['laoba','laoma'];  family .pop();

:空数组使用pop方法,返回undefined,不会报错;在原数组进行操作,会改变所操作的数组


8.unshift / shift

unshiftpush相反,从数组的第一个位置的前面开始添加

var family = ['laoba','laoma'];  family.unshift('爷爷');

shiftpop相反 从数组的第一个位置开始取,返回取出的值(数组长度减小)


9.排序方法sort

sort 针对原数组进行的排序,不会生成新的数组

默认sort()不带参数时按照数组中的元素转换成字符串进行比较(从小到大排序),不是对数字大小进行排序

//写法
var arr = [1,3,8,5,2];  arr.sort(); 

10.排序方法sort (有参数)

如果想对数字大小进行正序或者倒序进行排列,需要往sort方法内传入回调函数(sort每次排序时的根据),根据每次返回的值决定left和right的位置。

var arr = [1,7,5,12,6,43,75];
arr.sort(callback);                    
function callback(left,right) {
    return  left - right;
}

11.反转方法 reverse

什么是反转?
就是把数组的顺序调换一下

var arr = [1,3,5,2];
arr.reverse();   //[2,5,3,1]

万事熟能生巧,一步步来,多练习 都能学会;
so 再来几个小练习, 刚学习的同学们 , 试着做做;

一:定义一个含有5个数的数组,用两种遍历方法输出每个数
二:定义一个空数组,利用循环往数组中添加50个数(30--79)
三:定义一个无序数组,利用sort对数组进行正序排序
四:生成一个随机数num,判断num 乘以100是否大于50

让我们一起步步走向大牛之路。。。
--Kevin

打开App,阅读手记
8人推荐
发表评论
随时随地看视频慕课网APP

热门评论

顶起  虽然我学过了,但是还是巩固我的学习

谢谢分享,让我对数组又多点理解!

查看全部评论