js数组操作

1.遍历数组:
jquery
 
$.each(arr,function(index,value,arr){
         console.log(index+":"+value);
})
js:
 arr.forEach(function(value,index,arr){
              console.log(index+":"+value+":"+arr);
})
注意jq与js写法的不同,value与index的先后问题;
Foreach方法还可以传多个参数进去:
Array.forEach(function,thisobject);thisobject可以改变this值的指向问题
 
2,遍历并且改变数组:
Array.map(callback(value,index,arr){
   return ;
})
 var newarr=[1,2,3,0].map(function(value,index,arr){
           return value==0?new Number():value;  
})
map方法虽然能改变数组,也可以筛选数组,但是不能过滤数组
 
3,过滤数组:
Array.grep(callback(value,index,arr){
})
var greparr=$.grep([1,2,3,0],function(value){
                  return value!=0;
})//greparr=1 2 3;
Array.filter(callback(value,index,arr){
})
 var filterarr=[1,2,3,0].filter(function(value){
                  return value!=0;
})
alert(filterarr);//filterarr=1 2 3;
筛选数组的方法支持链式调用
 
4,按一定条件筛选数组,并且返回一个bool值
筛选合乎某些条件的数组:类似于选择器的has()
some方法():
1>:只有一个参数callback:
alert([1,2,3,40].some(function(value){
                    return value>10;
})) //返回就停止执行
2>:两个参数callback,thisobject:
some(function,thisobject)
要求所有的成员都满足的数组函数:
 alert([1,2,3,40].every(function(value){
                    return value>10;
 }))
 
5,寻找数组中的的某个元素
indexof():
Array.indexOf(searchelement,startindex),返回searchelement的索引值,未找到返回-1,如果startindex的值不符合要求 ,默认从首位开始查找;
 
 [1,2,3,40].indexOf(40,2) //3 40的index值
lastindexof():
Array.lastindexOf(searchelement,startindex),与indexOf不同的是lastindexOf是从末尾开始查找,stratindex默认为Array.length-1而不是0;
alert([20, 51, 72, 33, 54].lastIndexOf(5,3));  //1
 
6,迭代,递归:围绕数组一周
reduce(callback,initialValue):
callback(precious,current,index,array),initialValue:是一个可选参数,指定数组的初始值,如果有的话就代表着callback的第一个参数值precious为initialValue,迭代次数多了一次,例如以下例子:
console.log([1,2,3,4].reduce(function(pre,next,index,arr){
                      return pre+"+"+next;
},3))
如果没有就指的是从数组的第一个开始,此时的precious指的是数组的第一个元素,current指的是第二个元素,
console.log([1,2,3,4].reduce(function(pre,next,index,arr){
                      return pre+"+"+next;
 
}))
使用迭代实现二维数组的扁平化:
var matrix = [
    [1, 2],
    [3, 4],
    [5, 6]
];
console.log(matrix.reduce(function(previous, current) {
    return previous.concat(current); //concat函数是连接一个字符串或者是数组用的
}));
object.concat(element1,element2.....element):按照顺序连接一个字符串或者是数组
var str="Ss";
console.log(str.concat("sss","www"));
 
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>
 
var eleDivs = document.getElementsByTagName("div");
            Array.prototype.forEach.call(eleDivs, function(div) {
              console.log("该div类名是:" + (div.className || "空"));
});
posted @ 2017-11-21 14:14  laiso  阅读(162)  评论(0编辑  收藏  举报