下划线 _.union 不使用书架删除日期数组的重复项

underscore _.union not removing duplicates for dates arrays using bookshelf

我想知道为什么在下划线中(也使用书架)如果我们使用 _.union 作为日期数组,重复项不会被删除。

例如:

var union = _.union ( model.get( 'dates' ), [ new Date( date ) ] );

其中 model.get( 'dates' ) 是 Postgres 数据库中的日期数组。

这不会删除重复的日期。

提前致谢。吉列尔莫.

跟进@Bergi 富有洞察力的评论:

Dates are objects, and those are compared by reference. Your new Date will never equal anything contained in the other array.

您可以通过使用 new Date( date ).getTime() 将日期对象存储为 UNIX 时间戳(只是数字)来完成这项工作。当您从数据库中提取模型时,您可能必须为模型的 dates 数组以及添加到数组中的日期执行此操作。

这里有一个简短的片段来说明这一点:

var model = new Backbone.Model();

model.set('dates', [1424723679080]);

var union = _.union(model.get('dates'), [ new Date().getTime() ]);

console.log('test1');

if (union.length === 2) {
    document.getElementById('test').innerHTML = 'test1 passed. ';
    console.log(union);
} else {
    document.getElementById('test').innerHTML = 'test1 failed. ';
    console.log(union);
}

union = _.union(model.get('dates'), [1424723679080]);

console.log('test2');

if (union.length === 1) {
    document.getElementById('test').innerHTML += 'test2 passed. ';
    console.log(union);
} else {
    document.getElementById('test').innerHTML += 'test2 failed. ';
    console.log(union);
}
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>

<div id="test"></div>