Date オブジェクトの 2 つの配列を一意にマージしようとしていますが、適切な方法では取得できません。これが私のnoobソリューションです:
$old = [new Date('2012-08-01'), new Date('2012-08-02'), new Date('2012-08-03')];
$new = [new Date('2012-08-01'), new Date('2012-08-06')];
$old2 = $.map($old, function(el, idx) {
for (var i in $new)
{
if ($new[i].getTime() == el.getTime()) return null;
}
return el;
});
$new2 = $.map($new, function(el, idx) {
for (var i in $old)
{
if ($old[i].getTime() == el.getTime()) return null;
}
return el;
});
$final = $.merge($old2, $new2);
これは機能しますが、ちょっと面倒なようで、パフォーマンスが悪いと思いますか?私が行った別の試みはこれでした:
for (var i in $new)
{
var found = false;
for (var j in $old)
{
if ($old[j].getTime() == $new[i].getTime())
{
found = true;
$old = $old.splice(j, 1);
}
}
if (found)
{
$new = $new.splice(i, 1);
}
}
$final = $.merge($old, $new);
しかし、これはまったく機能しません。それを正しくかつ効率的に行う方法は?