当前位置: 移动技术网 > IT编程>脚本编程>AngularJs > angular forEach方法遍历源码解读

angular forEach方法遍历源码解读

2018年05月01日  | 移动技术网IT编程  | 我要评论

angular中提供了foreach()方法用于遍历对象或数组,供大家参考,具体内容如下

function foreach(obj, iterator, context) {
 var key, length;
 if (obj) {
  if (isfunction(obj)) {
   for (key in obj) {
    // need to check if hasownproperty exists,
    // as on ie8 the result of queryselectorall is an object without a hasownproperty function
    if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasownproperty || obj.hasownproperty(key))) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else if (isarray(obj) || isarraylike(obj)) {
   var isprimitive = typeof obj !== 'object';
   for (key = 0, length = obj.length; key < length; key++) {
    if (isprimitive || key in obj) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else if (obj.foreach && obj.foreach !== foreach) {
    obj.foreach(iterator, context, obj);
  } else if (isblankobject(obj)) {
   // createmap() fast path --- safe to avoid hasownproperty check because prototype chain is empty
   for (key in obj) {
    iterator.call(context, obj[key], key, obj);
   }
  } else if (typeof obj.hasownproperty === 'function') {
   // slow path for objects inheriting object.prototype, hasownproperty check needed
   for (key in obj) {
    if (obj.hasownproperty(key)) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  } else {
   // slow path for objects which do not have a method `hasownproperty`
   for (key in obj) {
    if (hasownproperty.call(obj, key)) {
     iterator.call(context, obj[key], key, obj);
    }
   }
  }
 }
 return obj;
}

官方描述:

foreach方法可以遍历数组或对象,函数有三个参数为别为:value,key,obj。
1)、value value指当遍历的对象或数组元素当前的值
2)、 key 是对象属性的的key或者数组的索引
3)、 obj obj即被遍历的对象或数组本身

示例:

   var values = {name: 'misko', gender: 'male'};
   var log = [];
   angular.foreach(values, function(value, key) {
    this.push(key + ': ' + value);
   }, log);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网