2012-02-05 2 views
0

다음 JavaScript를 사용하면 왜 출력에 동일한 값의 사본이 여러 개 포함되어 있습니까?왜 결과에 동일한 값의 사본이 여러 개 포함되어 있습니까?

reduce = function(docs) { 
    var values = []; 

    docs.forEach(function(doc) { 
    if (values.indexOf(doc.value) != -1) return; 

    values.push(doc.value.toDateString()); 
    }); 

    return values; 
} 

doc = {value: new Date("2012-01-01T00:00:00Z")} 

reduce([ doc, doc ]) 
// => ["Sat Dec 31 2011", "Sat Dec 31 2011"] 

답변

3

귀하의 확인이 잘못되었습니다.

이 제안, 카일 if (values.indexOf(doc.value.toDateString()) != -1) return;

+0

감사합니다, 우치! 매우 감사. 분명히 나는 ​​어젯밤 = P 해킹을 계속하기보다는 잠자리에 들었어야했다. – nickh

0
reduce = function(docs) { 
    var values = []; 
    if (values.indexOf(doc.value.toDateString()) != -1) return; 
    values.push(doc.value.toDateString()); 
    return values; 
} 

doc = {value: new Date("2012-01-01T00:00:00Z")} 
reduce(doc) 

//["Sun Jan 01 2012"] 

이보십시오. 하나만 통과 시키려면 foreach 함수를 사용하는 이유는 무엇입니까? 또한 reduce 함수에 한 번만 doc을 전달해야합니다.

+0

감사해야합니다. 문제의 코드는 단순화 된 예입니다. 내 응용 프로그램의 실제 코드는 많은 문서를 reduce()로 전달할 것이며, 일부 문서는 "value"속성에 중복 값을 포함하게됩니다. – nickh

관련 문제