2016-07-07 2 views
1

Я заметил что-то странное при попытке переключить настраиваемый цикл forin на цикл или lodash.Lodash & Underscore «each» over localStorage дает неожиданные результаты

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?

ответ

4

Это известная проблема, которая не будет исправлена. Вы можете найти the bug report on GitHub.

Основная проблема заключается в том, что _.each() подчеркивает, что объекты с объектом имеют свойство length.

Официальный ответ из отчета об ошибке:

Окончательное решение, что вы должны перебирать localStorage себя, а не полагаться на _.each.