《学习javascript数据结构与算法》——第二章:数组

例子:求斐波拉契数列的前20个数字

前两个数字都是1,从第三项开始,每一项都等于前两项之和

var fibonacci = [];
fibonacci[0] = 1;
fibonacci[1] = 1;
for (var i = 2; i < 20; i++) {
	fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
}
console.log(fibonacci);			//[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]

数组尾部添加和删除元素元素

//添加一个元素
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
numbers[numbers.length] = 10;

//添加任意个元素
numbers.push(11, 12, 13);

//删除最后一个元素
numbers.pop();

数组首部添加和删除元素

将所有元素向后移一个位置,腾出第一个元素的位置,来添加元素

var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (var i = numbers.length; i >= 0; i--) {
	numbers[i] = numbers[i-1];
}
numbers[0] = -1;
console.log(numbers);		//[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

添加任意个元素

var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
numbers.unshift(-2, -1);
console.log(numbers);		//[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

将所有元素向前移一个位置(不能达到删除第一个元素的效果,只能覆盖,长度还是没变)

var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (var i = 0; i < numbers.length; i++) {
	numbers[i] = numbers[i+1];
}
console.log(numbers);		//[1, 2, 3, 4, 5, 6, 7, 8, 9, undefined]

使用shift方法,删除第一个元素

numbers.shift();

数组指定位置添加、删除和替换元素

var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
//删除指定位置相应数量的元素
numbers.splice(5, 3);			//[0, 1, 2, 3, 4, 8, 9]
//指定位置添加任意个元素
numbers.splice(5, 0, 5, 6, 7);	//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
//指定位置替换元素
numbers.splice(5, 3, 1, 2);		//[0, 1, 2, 3, 4, 1, 2, 8, 9]

遍历二维数组

var arr = [[1, 2, 3, 4, 5], [11, 22, 33, 44, 55]];
function TwoDime(array) {
	for (var i = 0; i < array.length; i++) {
		for (var j = 0; j < array[i].length; j++) {
			console.log(array[i][j]);
		}
	}
}
TwoDime(arr);

遍历三维数组

for (var x = 0; x < arr.length; x++) {
	for (var y = 0; y < arr[x].length; y++) {
		for (var z = 0; z < arr[x][y].length; z++) {
			console.log(arr[x][y][z]);
		}
	}
}

创建3x3矩阵

使用3层嵌套的for语句

var arr = [];
for (var x = 0; x < 3; x++) {
	arr[x] = [];			//千万不要忘记这些设定,否则嵌套在里面的数组无法设置值
	for (var y = 0; y < 3; y++) {
		arr[x][y] = [];
		for (var z = 0; z < 3; z++) {
			arr[x][y][z] = "" + x + y + z;
		}
	}
}
console.log(arr);

//[[["000", "001", "002"], ["010", "011", "012"], ["020", "021", "022"]], [["100", "101", "102"], ["110", "111", "112"], ["120", "121", "122"]], [["200", "201", "202"], ["210", "211", "212"], ["220", "221", "222"]]]
posted @ 2016-03-24 11:07  u14e  阅读(178)  评论(0编辑  收藏  举报