判断一个对象是不是数组的方法

/*
 判断一个对象是不是数组:几种办法
 typeof无法区分对象和数组:typeof [] object
 typeof {} object
 1.   var obj={};var obj=[];var obj=function(){};
      obj instanceof 构造函数名/类型名(Array,Function,...)
 2. Array.prototype.isPrototypeof(obj)
*3. Object.prototype.toString.call(obj) [object Array]
 4. ES5: Array.isArray(obj)
    obj是数组,则返回true,否则返回false!
     判断并实现自定义isArray方法:
 */

//判断Array的isArray是否有效,如果无效 
if(!Array.isArray){ 
// 在Array上添加isArray方法,接受一个参数obj 
Array.isArray=function(obj){ 
// var result=强行用obj调用原始toString方法 
var result= 
 Object.prototype.toString.call(obj); 
//"[object XXXXX]" 
 // 如果result中能找到"Array" 
if(result.indexOf("Array")!=-1){//找到了 
return true;//返回true 
}else{//否则 
return false;//返回false 
} 
 } 
} 
document.write(Array.isArray({})+"<br>");//false 
document.write(Array.isArray([])+"<br>");//true 
 
//迭代API: 
//every:判断数组中所有元素是否都为偶数 
var arr1=[1,2,3,4,5]; 
var arr2=[2,4,6,8,10]; 
console.log( 
 arr1.every(function(value,index,array){ 
 return value%2==0; 
}) 
);//false 
console.log( 
 arr2.every(function(value,index,array){ 
 return value%2==0; 
}) 
);//true 
/* some: 判断数组中是否*包含*满足条件的元素 
 只要有一个满足就返回true 
 只有都不满足时才返回false*/ 
console.log( 
 arr1.some(function(value,index,array){ 
 return value%2==0; 
}) 
);//true 
console.log( 
 arr2.some(function(value,index,array){ 
 return value%2!=0; 
}) 
);//false 
 
//forEach: 对原数组中每个元素执行相同操作 
var arr=[1,2,3,4,5]; 
console.log(String(arr));//1,2,3,4,5 
arr.forEach(function(value,index,array){ 
 array[index]*=2; 
}); 
/**map: 将原数组中每个元素,经过加工,生成一个*新数组* 
 var newArr=arr.map(function(value,index,array){ 
 return 要放入新数组的值 
 })*/ 
var newArr=arr.map(function(value,index,array){ 
 return value*2; 
}); 
console.log(String(arr));//2,4,6,8,10 
console.log(String(newArr));//4,8,12,16,20 
 
//filter: 查找数组中符合条件的元素,组成新数组 
var subArr=arr.filter(function(value,index,array){ 
 return value%2==0; 
}); 
console.log(String(subArr));//2,4,6,8,10 
 
//reduce: 汇总数组中每个元素 
var result=arr.reduce( 
 function(prev,value,index,array){ 
 return prev+value; 
}, 
100 
); 
console.log(result);//130
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值