2016-07-07 3 views
1

사용자 정의 forin 루프를 underscore 또는 lodash 루프로 전환하려고 할 때 이상한 것으로 나타났습니다.Lodash & Underscore localStorage에서 "each"가 예기치 않은 결과를 나타냅니다.

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); 
}); 

내가 localStorage을 통해 루프 라이브러리 중 하나에서 _.each를 사용할 수없는 어떤 이유가 있습니까?

답변

4

이 문제는 해결되지 않을 것으로 알려졌습니다. the bug report on GitHub을 찾을 수 있습니다.

기본 문제는 _.each() 밑줄이 length 속성을 가진 개체에 잘 대처하지 못하는 것 같습니다. 버그 보고서에서

공식 응답 :

최종 결정은 localStorage에게 자신을 반복, 그리고 _.each에 의존해야한다는 것입니다.