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

时间:2015-02-23 20:21:20

标签: underscore.js

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

例如:

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

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

这不会删除重复的日期。

提前致谢。吉列尔莫。

1 个答案:

答案 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;
&#13;
&#13;