还是在学习数组之前,先思考一个小问题。
问题:现有如下运算功能,传入两个数,返回+-/四种运算的值(不是字符串),怎么做?
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
unshift 和 push相反,从数组的第一个位置的前面开始添加
var family = ['laoba','laoma']; family.unshift('爷爷');
shift 和 pop相反 从数组的第一个位置开始取,返回取出的值(数组长度减小)
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
热门评论
顶起 虽然我学过了,但是还是巩固我的学习
谢谢分享,让我对数组又多点理解!