我想知道为什么在下划线(也使用书架)中如果我们使用_.union作为日期数组,则不会删除重复项。
例如:
var union = _.union ( model.get( 'dates' ), [ new Date( date ) ] );
其中model.get('dates')是Postgres数据库中的日期数组。
这不会删除重复的日期。
提前致谢。吉列尔莫。
答案 0 :(得分:1)
跟随@ Bergi的富有洞察力的评论:
日期是对象,并通过引用进行比较。您的新日期永远不会等于另一个数组中包含的任何内容。
您可以使用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>
&#13;