数组 基础

  • var arr=[];   传递一个参数的话,若是数值则是项数,其他类型则是一项的值;
  • isArray()判断是否数组;
  • 数组转字符串:
    • 调用数组的toLocaleString(),toString(),valueOf()返回的是以逗号相隔的每一项的字符串形式,而join()则可以不用逗号分隔,join()接受的唯一一个参数就是分隔符;
  • 添加或移除数组项:
    • 动态地为数组末尾添加项数, color[color.length]=‘red';
    • 数组栈方法(Last-In-First-Out)
      • 栈的中项数的变化只发生在顶部,push()推入,pop()弹出,移除最后一项的同时返回最后一项;
    • 队列方法
      • push() , shift()移除并返回的是第一项第一项,unshift()是添加第一项;
  • 重新排序方法:
    • reverse()
      • 简单粗暴,反转数组项顺序      [1,2,3].reverse()   // [3,2,1]
    • sort()
      • default是升序排列数组,原理是调用数组项每一项的toString(),将数组项转换成字符串再比较它们。如:    [0,1,5,10,15].sort()    //[0,1,10,15,5]
      • sort()函数接受一个比较函数作为参数,排序的时候根据比较函数返回的值进行排序。而比较函数呢,接受两个进行比较的数据,当比较函数返回负值时,则第一个参数排在第二个参数前面,不用换位置;当比较函数返回0是,两个参数相等;当比较函数返回正数时,第一个函数应排在第二个参数后面,换位置;如果想要降序排列,设置相反的返回值即可;
 
function compare(value1, value2){
   
if (value1< value2){
       
return - 1 // 升序,负值不用交换
   
} else if(value1> value2){
       
return 1;
    }
else {
       
return 0;
    }
}
 
        • 当比较函数的两个参数是数值,或者是valueOf()返回数值的对象时,可以直接return  value1-value2,这样就直接根据value1-value2的结果决定要不要交换顺序;降序则用value2-value1
    • 操作方法
      • concat() ,copy一份数组副本同时为该 新的数组 添加项;就不像栈方法、队列方法是在原数组上操作;
      • slice(),返回子数组;slice(2,5)返回数组index为2-4的子数组;slice(3)返回从index为3到结束的子数组;
      • splice() 强大的方法,用于处理数组中部的项
        • 删除
          • splice(2,3);  从index为2处开始删除,共删除三项;返回被删除的子数组[index2,index3,index4],原数组改变;
        • 插入/替换
          • splice(2, 0, 'red', 'green');  在index为2处,不删除任何项,插入'red','green ; 相当于让index2=' red ' ;  index3=' green ' ;
          • splice(2, 3, 'red', 'green');  从index为2处开始,删除原来的3项并替换为'red','green;相当于index2='red' ; index3='green' ;并且数组length减少了1(替换项比删除项少了一项)
    • 位置方法
      • indexOf();顺序查找,返回位置。无结果返回-1,采用全等判断是否相等
      • lastIndexOf() 逆序 查找,返回位置。无结果返回-1,采用全等判断是否相等
    • 迭代方法
      • forEach() 没有返回值,只是让数组每一项都执行某个函数;forEach(function(){…………});
      • some() 数组每一项都执行某个函数,如果该函数对任一项返回的是true,则该方法返回true;用于检测是否含有符合条件的数组项;
      • every()数组每一项都执行某个函数,如果该函数对每一项返回的是true,则该方法返回true;用于检测是否数组项是否全部符合条件;
      • filter() 数组每一项都执行某个函数,返回该函数返回为true的项所组成的子数组;用于过滤掉不符合条件的函数;
      • map() 数组每一项都执行某个函数,返回执行该函数后返回的结果组成的新数组;用于创建和原数组一一对应的新数组;
      • 传入这些方法中函数接受三个参数:数组项 item,数组项的位置index,数组本身array
      • 以上方法都对原数组无影响;
    • 缩小方法
      • reduce() 接受一个函数,该函数接受四个参数reduce(function( pre , cur , index , array){…………}) ,函数从数组的第二项开始执行,数组第一项 = pre ,数组的第二项即当前执行到的那一项= cur;然后第二次执行函数,用上一次函数返回的结果作为pre,数组的第三项作为cur,依次往后类推执行
      • reduceRight() 跟reduce()原理一直,只是从数组倒数开始执行;
posted @ 2016-04-21 21:54  Lazymr  阅读(213)  评论(0编辑  收藏  举报