使用以下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"]
答案 0 :(得分:3)
您的验证错误。
应为if (values.indexOf(doc.value.toDateString()) != -1) return;
答案 1 :(得分: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函数,为什么还要做一个foreach函数?您也应该只将doc
一次传递给reduce函数。