数组:
*申明一个变量就是在内存空间划出一块核实的空间
*而声明一个数组就是在内存空间中划出一串连续的空间
var scroes=new Array();
scroes[0]=95;
scroes[1]=90;
scroes[2]=98;
console.log('数组scores中的第一个元素:' + scroes[0]);//元素索引是从0开始的
console.log('数组scores中的第二个元素:' + scroes[1]);
console.log(scroes);//直接输出数组名称,会按顺序输出数组中的元素的值
元素下标:用来对数组中的元素进行编号,下标从0开始,通过下标访问数组中的元素,下标也称为元素索引。
for(var i = 0;i
新创建的数组中没有元素,长度为0
数组中的元素,如果没有赋值,默认为undefind
每当我们向数组中添加元素时,length属性的值都会改变
例:循环获取10名学生的姓名,保存到数组中,然后输出。
var students=new Array();
for(var i=0;i<10;i++){
students[i]=prompt('请输入弟' +(i+1) + '学生的名字!');//获取用户输入的名字,保存至元素中
};
document.write('学生信息如下:
');
for(var i=0;i ');
};
例2:将1到100之间,能被3整除的整数,存放到数组nums中,然后输出统计个数。
var nums=new Array();
var index=0
for(i=1;i<=100;i++){
if(i%3==0){
nums[index]=i;
index++;
};
};
for(i=1;i<=100;i++){
if(i%3==0){
nums[nums.length]=i;//每当向数组中添加元素时,length的属性的值就会改变
};
};
console.log(nums.length);
var nums=new Array(3);//创建长度为3的数组
console.log(nums.length); //3
nums[3]=13;//数组长度会,自动扩展
nums[4]=14;
console.log(nums.length); //5
//创建数组的同时,添加元素
/*var names=new Array('Tom','Jack','Alice');
console.log(names.length); //3
var nums=[]; //创建一个空数组
nums[0]=1;
nums[1]=2;
用来对集合中的数据进行遍历
用法:
for(var 循环变量 in 集合){
};
其中循环的变量即为所遍历集合的索引
var str='welcome';//可以将字符串看做由许多字符组成的集合
for(var index in str){//index表示集合中每个元素的索引,并不是元素本身
console.log(index);
};
例子:提示用户输入一段英文,统计并输出其中元音字母(a,e,i,o,u)的个数
var english=prompt('请输入一段英文');
var conunt=0;
for (var index in english){
if (english[index]=='a'||english[index]=='e'||english[index]=='i'
||english[index]=='o'||english[index]=='u') {
count++;
};
};
console.log('共有' + count +'个元音字母');
数组不仅可以使用非负整数作为索引下标,也可以使用字符串作为下标,一般称之为key(键),即为键值对;
并且key不会对length属性产生影响,所以不适合使用普通for循环,而应该使用for…in循环(不会自动跳过undefined的数据)
例:
var array=[13,25,250,38];
array[4]=16;
array['age']=26;
array['name']='jackson';
console.log(array.length);//length属性无法获取字符串索引的元素
for(var i=0;i
用法:数组名.方法();
sort:默认按字符顺序排序,非string类型会转换为string
var nums=[25,26,111,38,7,120,8,3,99];
console.log('排序前:'+nums);//排序前:25,26,111,38,7,120,8,3,99
nums.sort();
console.log('排序后:'+nums);//排序后:111,120,25,26,3,38,7,8,99
//如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
var names=['tom','jack','mike','alice','lucy'];
console.log('排序前:'+names);//排序前:tom,jack,mike,alice,lucy
names.sort();
console.log('排序后:'+names);//排序后:alice,jack,lucy,mike,tom
reverse:将数组元素倒序排列
var names=['tom','jack','mike','alice','lucy'];
console.log('反转前:'+names);//反转前:tom,jack,mike,alice,lucy
names.reverse();
console.log('反转后:'+names);//反转后:lucy,alice,mike,jack,tom
var names=['tom','jack','mike','alice','lucy'];
var str=names.join();//默认将数组中的元素以逗号隔开
var joinStr=names.join('-');//会使用-隔开
var nums=[25,26,111,38,7,120,8,3,99];
var names=['tom','jack','mike','alice','lucy'];
var hobbies=['eat','sleep','peas']
var array=nums.concat(names);
var test=nums.concat(names,hobbies);
console.log(array);//[25, 26, 111, 38, 7, 120, 8, 3, 99, "tom", "jack", "mike", "alice", "lucy"]
console.log(test);//[25, 26, 111, 38, 7, 120, 8, 3, 99, "tom", "jack", "mike", "alice", "lucy",'eat','sleep','peas']
var names=['tom','jack','mike','alice','lucy'];
var str=names.toString();//功能与没有参数的join()方法相同
console.log(str);
var names=['tom','jack','mike','alice','lucy'];
console.log(names.valueOf());
console.log(names);//会自动调用valueOf()方法
该方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中
ES5中增加的
可以遍历数组
用法:
数组.forEach(function(value,index){
console.log(index +'='+value);
});
有一点要注意的是,该方法无法遍历字符串索引的值
JavaScript中本身只支持一维数组,不支持直接定义的二维数组,但是我们可以间接实现二维数组。
将一维数组中的每个元素定义为一个数组,即数组中的元素也是数组。
直接手动创建:
var nums=new Array();
nums[0]=new Array();
nums[0][0]=13;
nums[0][1]=15;
nums[0][2]=7;
nums[0][3]=29;
nums[0][4]=26;
nums[1]=new Array();
nums[1][0]=2;
nums[1][1]=8;
nums[1][2]=12;
nums[1][3]=85;
nums[1][4]=100;
nums[2]=new Array();
nums[2][0]=11;
nums[2][1]=22;
nums[2][2]=33;
nums[2][3]=44;
nums[2][4]=55;
console.log('第一行第三列为:'+nums[0][2]); //7
使用二重循环输出:
for(var i=0;i
使用循环来创建:
//使用循环来创建4*4的二维数组
var array=new Array();
for(var i=0;i<4;i++){
array[i]=new Array();
for(var j=0;j<4;j++){
array[i][j]=parseInt(Math.random()*99+1);
};
};
排序法理论其实网上很多,因为这个方法适用于大部分现在的编程语言,这边我就摘抄一下理论概述:
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
交换数据的方法也简单,这边自己简单写下JS中的用法:
for(var i=0;i<数组名.length-1;i++{ // 外层为控制轮数,每一轮确定一个数字, 轮数公式为 n-1,即元素数量-1
for(var j=0;j<数组名.length-i-1;j++{// 内层为控制比较次数, 次数公式为 n-1,即元素数量-轮数-1
var 临时变量=数组[j]; //先把前一个数赋值给临时变量
数组[j]=数组[j-1];//再把后一个数赋值给前一个数
数组[j]=临时变量;//再把临时变量赋值给后一个数
};
};
例:
var nums=[25,26,111,38,7,120,8,3,99];
console.log('初始值:'+nums); //初始值:25,26,111,38,7,120,8,3,99
//外层循环控制轮数,每一轮确定一个数字
for(var i=0;inums[j+1]){
var temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
};
};
};
console.log('冒泡排序完整后的结果为:'+nums); //冒泡排序完整后的结果为:3,7,8,25,26,38,99,111,120
我们可以看一下上例每一轮的交换结果:
第1轮,比较的结果为:25,26,38,7,111,8,3,99,120
第2轮,比较的结果为:25,26,7,38,8,3,99,111,120
第3轮,比较的结果为:25,7,26,8,3,38,99,111,120
第4轮,比较的结果为:7,25,8,3,26,38,99,111,120
第5轮,比较的结果为:7,8,3,25,26,38,99,111,120
第6轮,比较的结果为:7,3,8,25,26,38,99,111,120
第7轮,比较的结果为:3,7,8,25,26,38,99,111,120
第8轮,比较的结果为:3,7,8,25,26,38,99,111,120
注:此为个人学习笔记,如有补充可以选择在评论区留言或者无视。