【问题标题】:Difference between _.forEach and _.forOwn in lodash_.forEach 和 _.forOwn 在 lodash 中的区别
【发布时间】:2023-03-20 04:20:01
【问题描述】:

迭代对象时这两种方法有什么区别?

【问题讨论】:

    标签: foreach lodash


    【解决方案1】:

    不同之处在于,如果您要迭代的集合是一个具有length 属性的对象,那么_.forEach() 将像数组一样对其进行迭代,而_.forOwn() 将对其进行迭代像一个物体一样覆盖它。

    假设你有这个对象:

    a = {
      x: 100, 
      y: 200, 
      length: 2
    }
    

    如果您将其迭代为:

    _.forEach(a, function(val, key) {
      console.log('a[' + key + '] = ' + val); 
    });
    

    你会得到输出:

    a[0] = undefined
    a[1] = undefined 
    

    而使用_.forOwn() 对其进行迭代,您会得到更合理的结果:

    a[x] = 100
    a[y] = 200
    a[length] = 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2014-02-27
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多