首页 > 开发 > JS > 正文

一个对于Array的简单扩展

2024-09-06 12:44:46
字体:
来源:转载
供稿:网友
其实就是 prototype 1.4中 枚举对象部分 的简化版本, 
先贴代码,等下再一一解释,对初学者可能有帮助 

最近一直在学习Python,一直感叹于python中 list的灵活, 
同样都是数组,为什么javascript不能和python中的一样灵活呢, 
(其实下面这些 prototype 1.4已经实现了,不过 prototype太胖了,你知道的,我对胖女人不感兴趣) 
于是就有了下面的代码.....  

代码如下:
<script>
Array.prototype.map = function(f) {  
  var arr=[]
  for(var i=0;i<this.length;i++) arr.push(f(this[i]))
  return arr  
}

Array.prototype.each = function(f) { 
  for(var i=0;i<this.length;i++) f(this[i])
}

Array.prototype.find = function(f) {  
  for(var i=0;i<this.length;i++)  if (f(this[i])) return this[i]
  return null
}

Array.prototype.findAll = function(f) { 
  var arr=[]
  for(var i=0;i<this.length;i++)  if (f(this[i])) arr.push(this[i])
  return arr
}

Array.prototype.getPart = function(f) {   
  for(var i=0;i<this.length;i++)  if (f(this[i])) return [this.slice(0,i+1),this.slice(i+1)]
}


Array.prototype.all = function(f) { 
  for(var i=0;i<this.length;i++)  if (!f(this[i])) return false
  return true
}

Array.prototype.any = function(f) { 
  for(var i=0;i<this.length;i++)  if (f(this[i])) return true
  return false
}

Array.prototype.grep = function(regex,f) { 
  var arr=[]
  for(var i=0;i<this.length;i++){
     if (this[i].toString().match(regex)) arr.push((f || function(x){return x})(this[i]))
  }  
  return arr
}

Array.prototype.include = function(v) { 
  for(var i=0;i<this.length;i++)  if (this[i]==v) return true
  return false
}
Array.prototype.indexOf = function(v) { 
  for(var i=0;i<this.length;i++)  if (this[i]==v) return i
  return -1
}

Array.prototype.inject = function(v,f) { 
  var vv=v
  for(var i=0;i<this.length;i++)  vv=f(vv,this[i])
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表