数组
什么是数组
1、数组:数组是内存中一片连续的存储空间。
2、如何在JavaScript中声明数组:
(1)通过字面量的方式声明数组:
var a=[10,20,30,40,50,60];
//字面量方式下用字母或汉字是必须带引号,用逗号隔开
//例如var a=["sam","ssr","word"]
声明一个数组,该数组的名称为a,该数组共有6个数组元素。
例:var y=[]; //声明数组y,这是一个空数组
var x=[15]; //声明数组x,只有1个数组元素
(2)通过数组的“构造函数”声明数组:
var b=new Array(100,200,300,400,500);
//构造函数方式下用字母或汉字是必须带引号,用逗号隔开
//例如var a=("sam","ssr","word")
//用括号间隔
new是一个单目运算符,后面可以跟“构造函数”。数组的构造函数名
为Array。声明数组b,该数组共有5个数组元素。
例:var y=new Array(); //声明数组y,这是一个空数组
var x=new Array(15); //声明数组x,该数组共有15个元素。
利用数组的构造函数声明数组,若只有一个参数,则该参数表示数组元素的个数。
如何获取数组元素的个数,显示所有的数组元素
使用数组的length属性,该属性可以利用数组名进行引用。
例:
var arr=[“A”,“B”,“C”,“D”,“Z”];
console.log(arr.length); //5
var brr=[];
console.log(brr.length); //0
var crr=new Array(7,1);
console.log(crr.length); //2
var drr=new Array(7);
console.log(drr.length); //7
length为索引值,可以得知数组的索引值和数组元素的个数
显示所有的数组元素:
通过对数组名称的输出,可以显示所有的数组元素。
var w=[5,10,15,20,25,30,35,40];
console.log(w); //[5,10,15,20,25,30,35,40]
使用typeof()运算符测试数组名会得到什么?
var x=[1,2,3,4,5];
console.log( typeof(x) ); //object
操作数组元素
1、允许通过为数组的length属性赋值来改变数组元素的个数。
(1)var x=[10,20,30,40,50];
x.length=10; //扩大了数组元素的个数,多余的数组元素暂时只有位置,没有数据
console.log(x); //[10,20,30,40,50, empty x 5]
document.write(x); //10,20,30,40,50,,,,,
(2)var x=[10,20,30,40,50];
x.length=3; //缩小了数组元素的个数,数组会从后面的
数据中将多余的数据删除
console.log(x); //[10,20,30]
2、如何操作一个数组元素:
数组中的数组元素下标从0开始计数。
(1)获取数组元素:
var m=[“Tom”,“Lucy”,“Jim”,“Bob”];
console.log(m[1]); // Lucy
(2)为一个空数组赋值:
var y=[];
y[0]=“语文”;
y[1]=“数学”;
y[2]=“英语”;
console.log(y); // [“语文”,“数学”,“英语”]
3、允许通过为一个不存在的大下标的数组元素赋值来增大数组。
var t=[“A”,“B”,“C”];
t[100]=“Z”;
console.log(t.length); //101
console.log(t); //[“A”,“B”,“C”, empty x 97 ,“Z”]
4、利用for循环来对数组进行数组元素的逐个输出:
var array=[10,20,30,40,50,60,…….];
for(var i=0;i<array.length;i++){ //也可以书写为:for(var i=0;i<=array.length-1;i++){
console.log(array[i]);
}
如果更改循环变量i的取值范围,可以输出数组中的一部分数组元素。
数组的实例
//使用数组输出斐波那契数列的前20项
var s=20;
// 定义变量s=20
var ssr=new Array(s);
// 定义数组名和构造函数的值
ssr[0]=1;
// ssr中索引值为0的哪一项为1
ssr[1]=1;
//ssr中索引值为1的那一项为1
for(var i=2;i<s;i++){
//循环条件为i=索引值为2的哪一项
//同时i<变量s
//i+1
ssr[i]=ssr[i-1]+ssr[i-2];
// ssr中的索引值为i的那一项等于
// ssr[索引值i-1的那一项]加上
// ssr[索引值i-2的那一项]
}
document.write(ssr);
// 输出数组ssr;
//国际棋盘(8*8)问题。第一个格子放1粒米,第2个格子
//放2粒米,以后每个格子的米粒个数是前一个格子米粒个
//数的2倍。设一吨大米2500万粒,总共需要多少吨大米。
var shaess=new Array(64);
// 用构造函数的原因是因为它能够
// 直接定义内部有多少个数组元素
shaess[0]=1;
// 由题意知每个格子总比前每一个格子的数多两倍
// 由此知道第一个格子的数量即可推算后面的格子
var sum=shaess[0];
// sum等于chaess里索引值为0的那一项
for(var i=1;i<shaess.length;i++){
// 变量i等于索引值为一的哪一项;
// i小于数组chaess的索引值
// 当程序执行成功时i+1;
shaess[i]=2*shaess[i-1];
// chaess里索引值为i的那一项等于
// 2乘以shaess里索引值为i的那一项-1
sum=sum+shaess[i];
// sum得值等于sum+chaess里索引值为i的那一项等于
}
var weight=sum/25000000;
console.log("需要" + weight + "吨大米");