javascript 数组方法

数据集合在编程中使用的非常广泛,比如C#中的Collection、List使我们可以存储“一组”数据,并对这组数据进行遍历、删选、排序...等操作,C#中linq给我提供了各种便利的集合操作方法; 同样 javascript数组对象从Array.prototype上继承了很多实用方法;

模拟二维数组实现九九乘法表

var table = new Array(10);
for (var i = 0; i < table.length; i++) {
	table[i] = new Array(10);
}
for (var row = 0; row < table.length; row++) {
	for (var col = 0; col < table[row].length; col++) {
		table[row][col] = row * col;
	}
}
// 在控制台查看table的行列关系
console.table(table);
// talbe的行列对应的值就是九九乘法表的值 
// 如 5*7 == table[5][7]
console.log(table[5][7]);

Array.join(<seperator>)用指定分隔符连接数组的各个元素,返回字符串###

常用于用数组收集数据后,生成一个逗号分隔的字符串这类操作;和字符串的split操作刚好相反

var arr = [1,2,3,4]
arr.join(' ');        //=> "1 2 3 4"
arr.join('|');        //=> "1|2|3|4"
console.log(arr);     //=> [1,2,3,4]   //无副作用

副作用 Array.reverse() 颠倒数组元素的顺序, 并返回

var arr = [1,2,3];
var b = arr.reverse();
console.log(b);    //=> [3,2,1]
console.log(arr);  //=> [3,2,1]  //副作用

副作用 Array.sort([function]) 排序后返回,如果没有传入比较函数 则以字母表的顺序排序(其他类型会先转成字符串), undefined会排到末尾;

//1. sort();
var a = ['banana','cherry',undefined,'apple']
var b = a.sort();
var s = a.join(', ') // s == "apple, banana, cherry, undefined"
var y = b.join(', ') // y == "apple, banana, cherry, undefined" 

//2. sort([funtion(a,b)]) 
// 假设第一个参数应该在第二个参数前面,则返回小于0的数,反之返回大于0的数
var a=[33, 4, 111, 222];
a.sort();  //!!! 按照字母表顺序排列 [111, 222 ,33, 4]  
// 从小到大排列 
a.sort(function(a, b) {
	return a - b;
})

Array.conact(array1,array2,...) 连接多个数组元素,返回新数组;不会深层次连接

var a = [1,2]
var b = a.concat([3,[4,5]])
// b ==  [1, 2, 3, [4, 5]]
// a == [1,2] 无副作用

Array.slice([start],[end]) 返回数组的指定片段

负数表示从最后一位开始

start: 开始截取的索引位置(包含);

end: 结束位置(不包含),不指定表示截取从start到结尾所有元素

var a = [1,2,3,4,5];
var b = a.slice(0,3); // [1, 2, 3] 
b = a.slice(2,-1);    // [3, 4]
b = a.slice(2);       // [3, 4, 5]
b = a.slice(-3,-2);   // [3]
### b = a.slice(-3,-3);   // []

副作用 Array.splice([start],[count],[replacer]) 删除和插入数组元素的通用方法,返回由被删除元素组成的数组

var a = [1,2,3,4,5,6];
var b = a.splice(1,0,'a');   // 返回 []; a: [1,"a",2,3,4,5,6]
b = a.splice(1,1,['a','b']); // a:  [1,["a","b"],3,4,5,6] 
a.splice(2); // 返回[3,4,5,6]  a: [1,["a","b"]] 

堆栈/队列 操作

以下四个方法,两两组合可以模拟堆栈的先进后出、队列的先进先出效果
var a=[];
//1. Array.push([element],[element],...) 向数组末尾推入新元素
a.push(1); // a: [1]
a.push([2,3]); // a: [1,[2,3]]

//2. Array.shift() 返回数组第一位元素
var b = a.shift(); // b: 1 
b = a.shift();         // b: [2,3]

//3. Array.unshift([element],[element],...) 在数组开头压入新元素
a.unshift(4);
a.unshift([6,7]); // a: [4,[6,7]]

//4. Array.pop(); 弹出数组最后一个元素
var b = a.pop(); // b: [6,7]

posted @ 2016-09-16 01:51  mushishi  阅读(438)  评论(0编辑  收藏  举报