创建数组
var list = new Array(1000);/ /申请长度为1000的数组,,脚本语言创建数组真的是方便
无视类型,你想插入什么类型的数据就什么类型的数据
list[0] = 1;
list[1] = "hello";
list[2] = new Car("Ford", "V6");
list[999] = true;
alert(list.length); //显示1000
//创建数组的另外一种方式
var my_list = new Array(1, 2, "three", "four");
var my_list_2 = [1,2,"three","four"]; //是方括号, 不要与C++的大括号混淆!
数组可以动态增长
数组本来不能随意增长,但在脚本语言里,仿佛无所畏惧了~(当然,这是表面,底层是做了操作的)
var list = new Array(10);//申请长度为10数组
for (var i=0; i<10; i++)
list[i] = i;
list[10] = 11; //在后面添加一个新元素11
list[11] = 12; //在后面再添加一个新元素12
list[100] = 100; //数组长度变为101 ,但其中12~99的元素还没分配空间
list.length = 10; //缩减数组长度为10
list.length = 100; //扩张数组长度为100, 同样也是尚未分配扩张的空间
数组的遍历方式及区别
ps:JavaScript由三部分组成,ECMAScript(ES,核心),DOM(文档对象模型),BOM (浏览器对象模型)
var list = [1,2,"three","four"];
//方法1:这种方法局限于下标是自然数的,js的数组跟php类似,下标可以是属性,类似于哈希表中的键值对
for (var i=0; i<list.length; i++)
document.write(list[i]);
//方法2:for in主要用于遍历对象属性
for (var i in list)
document.write(list[i]);
//方法3:ES5新增,forEach,通过一个匿名函数遍历,不能跳过或者终止循环,但可采用将forEach放入try{},catch{},手动抛出异常的方式
list.forEach(function(element){
document.write(element);
});
//方法4:ES6新增, 最灵活
aa.forEach(v => document.write(v));
//方法5:ES6新增,可以终止
for (var v of list)
document.write(v);
数组可以当做栈或队列
栈:先进后出,队列:先进先出
var colors = new Array(); 申请长度为0数组
colors.push("red"); //压入一个数
colors.push("blue", "green"); //压入多个个数
alert(colors.length); //显示 3
var item = colors.pop(); //item="green"
alert(colors.length); //显示长度2
//如果应用为队列, 就使用shift
var item = colors.shift(); //摘取第一个元素,其他元素平移一位
数组的散列表用法
这里跟php类似,都是可以写成类似键值对的形式
<script type="text/javascript">
var aa = [];
aa['bb'] = 135; aa['10'] = "abcdf"; //这里的数组下标是字符bb,10
alert(aa['bb']);
alert(aa[10]);
alert(aa.length); //11, 扩展数组长度
//这里可以体验到for in跟普通的遍历的区别,for in什么都不会输出,而普通的遍历会输出0_undefined.........
for (var i in aa)
document.write("<p>--",
i, "__", aa[i], "</p>");
for (var i = 0; i < aa.length; i++)
document.write("<p>",
i, "__", aa[i], "</p>");
</script>
数组的其他方法
var names = [Mary","Murray","Murphy","Max"];
var name_string = name.join(" : ") ; //join方法把数组每个元素连起来,name_string="Mary : Murray : Murphy : Max"
names.sort(); //数组元素排序,排序结果:name=["Mary", "Max", "Murphy", "Murray"]
var list = [1, 3, 5, 7, 9, 11, 13];
var list2 = list.slice(1, 5); //取下标是[1, 5)的元素,左闭右开,跟java类似
alert(list2) //显示3, 5, 7, 9
var list3 = list.slice(4); //取下标4以后的元素
alert(list3) //显示9, 11, 13