js 数组常用的操作函数整理

平时多做企业应用开发,抱着实用为主,对前端技术理解得比较肤浅,下面就是肤浅地对 js 数组的属性和方法及对它操作的 jquery 方法做些记录;

 

js 数组是 js 内建的一个非常强大数据类型,由于 js 是弱类型语言,所以一个数组可以保存多种类型的数据: 数字、字符串、对象、函数、布尔... ...;

var arr = [1,{name:'Jonh',id:1001}, function(){console.log('test');},'hello world',true]; 

 

常用访问数组元素的方法:

for 和 for-in 在循环时,如果数组大小做了改变,使用起来会有所区别;

var testArr1 = [1,2,3,4,5];

// for,  因为 testArr1.length 是一个常数 5, 循环过程 testArr1 大小变了,循环次数还是 5;
for(var i = 0; i < testArr1.length; ++i){
    if(i == 3) testArr1.push(6); // 添加一个元素;
    console.log(testArr1[i]); // 访问不到新加的元素 6; 
}


var testArr2 = [1,2,3,4,5]; 

// for-in 如果循环过程中 testArr2 的大小变了, i 如果大于了改动后的 testArr2.length,会马上终止循环
for(var i in tsetArr2){
  if(i==3)testArr2.push(6); // 添加一个元素; 
  console.log(testArr2[i]); // 可访问到新加的元素 6;    
}

jquery 循环: $.each, $.grep, $.map 与 for 最大不同是循环过程不能退出,即一定会访问数组中的每个元素到结束;而for 可以用 break 中断循环;

 

var testArr = [1,2,3];

//访问数组元素;
$.each(arr,function(index,elem){
});

// 返回符合条件的元素,组成一个新的数组;
//注意 function(elem,index) 第一个实参是元素,第二个才是元素的索引
var newArr = $.grep(arr,function(elem,index){
     //condition
     return elem==1 or elem ==2; 
});
// newArr is [1,2]


// 返回任意新的数组元素,组成 一个新的数组;
var newArr = $.map(arr,function(index,elem){
    return 'test-' + index;
});
// newArr is ['test-1','test-2','test-3']; 

 

 识别数组:

// 数组是一种特殊的 object 类型,typeof 拿到的只是 object; 
typeof arr; // => object

// 可用下面 2 种方法判断对象是否为数组
arr.constructor.toString().indexOf('Array') > 0
// 
Object.prototype.toString.call(arr) == '[object Array]'

常用方法:

// join 将数组中的元素组合成一个字段串,元素之间用指定的字符串连接起来;
arr.join(','); //"1,[object Object],function (){console.log('test');},hello world,true"

// push 向数组添加新的元素, 数组改变;
arr.push('new'); 

// pop 弹出最后一个元素,数组改变;
arr.pop(); // 'new'

// slice(startIdx, count) 获取数组中一段连续的元素,组成一个新的数组;startIdx 开始索引,count 数量;
arr.slice(0,1); //[1]; 

// splice(startIdx,count,otherElems)  有强大的功能,包括: 插入,替换,删除;startIdx 开始索引, count (替换,删除)数量, 数组改变并返回一个新的数组;
// 替换
var testArr = [1,2,3,4,5]; 
var retArr = testArr.splice(0,2,7,8,9);//retArr is [1,2], testArr is [7,8,9,3,4,5], "7,8,9" 是替换 "1,2"; 
// 删除,省略 otherElems 就是删除
var testArr = [1,2,3,4,5]; 
testArr.splice(0,2); // testArr is [3,4,5]; 
//插入,将 count =0 ,即不作替换直接插入
var testArr = [1,2,3,4,5];
testArr.splice(2,0,7,8,9); //testArr is [1,2,7,8,9,3,4,5]; 

 

posted @ 2015-03-26 20:10  Grissom007  阅读(820)  评论(0编辑  收藏  举报