Lodash&下划线"每个" over localStorage会产生意想不到的结果

时间:2016-07-07 14:21:22

标签: javascript underscore.js local-storage each lodash

我在尝试将自定义for in循环切换为underscorelodash循环时发现了一些奇怪的内容。

  

JSBIN:http://jsbin.com/manerotoru/2/edit?html,js,console

window.localStorage.setItem("hello", "world")

console.log('-----underscore-----')

_.each(window.localStorage, function (value, key) {
  console.log(value);
  console.log(key);
});


console.log('-----custom-----')

function each (object, callback) {
  for (var key in object) {
    var value = object[key];
    callback(value, key);
  }
}

each(window.localStorage, function (value, key) {              
  console.log(value);
  console.log(key);
});

以下是登录控制台的内容。

-----lodash-----
undefined
0
-----custom-----
world
hello

并不是_.each不会在对象上循环,因为它在这里做得很好。

var data = {"hello": "world"}

_.each(data, function (value, key) {
  console.log(value);
  console.log(key);
});

我有什么理由不使用任何一个库中的_.each来循环localStorage吗?

1 个答案:

答案 0 :(得分:4)

这是一个无法解决的已知问题。您可以找到the bug report on GitHub

潜在的问题似乎是强调_.each()并不能很好地处理具有length属性的对象。

错误报告的官方回复:

  

最后的决定是你应该自己迭代localStorage,而不是依赖_.each