JavaScript数据结构 ---- 数组
1. 使用数组
1.1 创建数组
使用 [ ] 创建一个长度为 0 的空数组:
var num = [];
console.log(num.length); // 0
也可以在声明数组变量时在 [ ] 中放入一组元素:
var num = [1,2,3,4,5,6];
console.log(num.length); // 6
还可以调用 Array 的构造函数创建数组:
var num1 = new Array();
console.log(num1.length); // 0
var num2 = new Array(1,2,3,4,5,6);
console.log(num2.length); // 6
如果在调用 Array 的构造函数时,只传入一个参数,那么这个参数就是数组的长度:
var num = new Array(1024);
console.log(num.length); // 1024
JavaScript里数组中的元素不必是同一种数据类型:
var object = [1, "JavaScript", true, null];
可以调用 Array.isArray() 来判断一个对象是否是数组:
var num = 3;
var arr = [1,2,3,4];
console.log(Array.isArray(num)); // false
console.log(Array.isArray(arr)); // true
有一种方法可以判别各种对象类型:
function isArray(arr) {
return Object.prototype.toString.call(arr) === '[object Array]';
}
只需把 Array 换成其他类型即可(eg:Function)。
1.2 读写数组
使用 [ ] 操作符读取数组中的元素:
var num = [1,2,3,4,5];
var sum = num[0] + num[1] + num[2] + num[3] + num[4];
console.log(sum); // 15
想要依次读取数组的话,可以使用 for 循环:
var num = [1,3,5,7,8,10,12];
var sum = 0;
for (var i = 0; i < num.length; i++) {
sum += num[i];
}
console.log(sum); // 46
调用字符串对象的 split() 方法可以生成数组,该方法通过分隔符(比如单词间的空格),将一个字符串分成几部分保存在数组中。
var sentence = "This is a time of wonder";
var words = sentence.split(" ");
console.log(words); // ["This", "is", "a", "time", "of", "wonder"]
1.3 整体操作数组
浅复制 ---- 当把一个数组赋值给另外一个数组时,只是为被赋值的数组增加了一个新的引用。当原引用变化时,另一个引用也会变化。
var num = [];
for (var i = 0; i < 5; i++) {
num[i] = i * i;
}
var yetnum = num;
num[0] = 1024;
console.log(yetnum); // [1024, 1, 4, 9, 16]
深复制 ---- 将原数组中的每一个元素都复制一份到新数组中。
function copy(arr1, arr2) {
for (var i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
}
//一个实现深复制的函数