Dean Front-end Dev Engineer

JS 中数组的常用方法


判断是否为数组的方法

  • instanceof,在只有一个全局执行环境时有效,如果网页包含多个框架,那实际上存在多个全局执行环境时,判断不准确。

  • Array.isArray(),克服了instanceof的问题。不过要在ie9+以上才能用。因此存在浏览器兼容问题

  • Object.prototype.toString.call(arr) === ‘[object Array]’; 可以写下面函数,直接给 Array 对象添加一个方法 isArray 方法。

        (function(){
            if(!Array.isArray){
                Array.isArray = function(arr){
                return Object.prototype.toString.call(arr) === '[object Array]';
                }
            }
        })();
    

把一个运算数转换成 Number

  • 常用的两个将字符串转数字的方法 Number() 与 parseInt() 区别

    Number(),这个方法,是将一个字符串数或 true,false,null 转换成数字,其它转成 NaN。

    parseInt(),把一个字符串转换成整数的函数。遇到非数字时,停止解析。有数返回数,没数返回NaN,解析数字时,还会默认根据数字前面的符号转换进制。例如 ‘08’ 就会根据前面的 0 转换成八进制,又因八进制中没有数字 8,就会解析成 0。因此在用这个方法的时候,最好添加上进制。例如:parseInt(‘08’, 10);就会根据 10 进制来转换。

  • 判断一个值是否可用作数字的最佳方法是使用 isFinite() 函数。它会筛选掉 NaN 和 Infinity,isFinite() 也会像 Number() 一样试图把一个运算数转换为一个数字。

数组的方法整理

改变原数组的操作方法

  • 尾部 加:push(), 减:pop();
  • 头部 加:unshift(), 减:shift();
  • 批量删除,插入。splice(index, howmany,item1,……itemX)
  • 反转数组 reverse()
  • 排列数组 sort()

不改变原数组的操作方法,返回新数组

  • join(‘’) 将数组串成字符串
  • slice() 截取部分数组,返回新数组
  • concat() 合并数组,也经常用作复制数组
  • map() 遍历数组,做操作,形成数据,然后返回一个新数组,如果没设返回值,则返回一个等长的数组,数组每一项的值都是 undefined
var arr = [1,[2,3],[[4,5],6],7];//把数组变成一维数组
console.log(arr.toString().split(',').map(function(x){
	return Number(x);
}));//返回[1,2,3,4,5,6,7]
console.log(arr.toString().split(',').map(function(x){
	alert(x);
}));//分别弹出1,2,3,4,5,6,7,最后返回[undefined,undefined.....]7项
//因为map()方法返回的是一个数组,方便做链式操作。
  • forEach() 遍历数组,做操作,最后返回 undefined
  • filter() 判断数组的每一项是否符合某个条件,为 true 时,返回该项,最后形成新数组
  • every() 判断数组的每一项是否附合某一条件,全部附合,返回 true,否则 false
  • some() 判断数组是否有一项附合某一条件,有一项附合,返回 true,否则 false

注:map(),filter(),forEach() 不能中断遍历;如果需要中断,可以灵活运用 some() ,或用 for 循环


Similar Posts

上一篇 JS 中的对象

Comments