2017-08-24 20 views
0

我目前有兩個包含日期的數組。我想在比較兩個數組時檢查是否至少有一個值匹配。爲了澄清,這些是Date對象而不是字符串。我下面總是代碼似乎返回false:如何比較兩個包含日期的數組以檢查是否有值匹配?

var between = [Sun Aug 27 2017 00:00:00 GMT+0100 (BST), Mon Aug 28 2017 00:00:00 GMT+0100 (BST), Tue Aug 29 2017 00:00:00 GMT+0100 (BST), Wed Aug 30 2017 00:00:00 GMT+0100 (BST)]; 
 
var myDate = [Mon Aug 28 2017 00:00:00 GMT+0100 (BST), Thu Aug 24 2017 00:00:00 GMT+0100 (BST)]; 
 

 
var bExists = false; 
 
$.each(myDate, function(index, value){ 
 
    if($.inArray(value,between)!=-1){ 
 
     console.log(value); 
 
     bExists = true; 
 
    } 
 
    if(bExists){ 
 
     return false; \t //break 
 
    } 
 
}); 
 

 
console.log(bExists);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

的可能的複製[如何在JavaScript中比較數組?](https://stackoverflow.com/questions/7837456/how-to-比較array-in-javascript) –

+0

你提到的問題不能很好地解決我的問題 – dreamkiller

+0

你的代碼似乎工作得很好。請確保將日期包裹在''''看看這裏https://jsfiddle.net/83xaagmc/ –

回答

0

var between = [new Date('Sun Aug 27 2017 00:00:00 GMT+0100 (BST)'), new Date('Mon Aug 28 2017 00:00:00 GMT+0100 (BST)'), new Date('Tue Aug 29 2017 00:00:00 GMT+0100 (BST)'), new Date('Wed Aug 30 2017 00:00:00 GMT+0100 (BST)')]; 
 
var myDate = [new Date('Mon Aug 28 2017 00:00:00 GMT+0100 (BST)'), new Date('Thu Aug 24 2017 00:00:00 GMT+0100 (BST)')]; 
 

 
var bExists = false; 
 
$.each(myDate, function(index, myDateValue){ 
 

 
    $.each(between, function(index, betweenValue){ 
 
     if(myDateValue.toString() == betweenValue.toString()){ 
 
     console.log(betweenValue); 
 
     bExists = true; 
 
     return false; 
 
     } 
 
    }) 
 

 
}); 
 

 
console.log(bExists);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

將您的Date對象toString否則,你可以使用getTime,然後進行比較。

+0

問題是我的數組不包含日期作爲字符串,它們根據用戶選擇而變化,作爲更廣泛的實現的一部分。我必須首先將兩個數組中的每個元素轉換爲字符串嗎? – dreamkiller

+0

@dreamkiller你是指你在數組中存儲的日期對象? – Durga

+0

是的。這是否會導致問題? – dreamkiller

0

這樣你可以找到一個人的那場比賽

Array.prototype.diff = function(arr2) { 
var ret = []; 
for(var i in this) { 
    if(arr2.indexOf(this[i]) > -1){ 
     ret.push(this[i]); 
    } 
} 
return ret; 
}; 
0

你可以利用的Array.some檢查至少一個元素滿足該條件。

var between = ["Sun Aug 27 2017 00:00:00 GMT+0100 (BST)", "Mon Aug 28 2017 00:00:00 GMT+0100 (BST)", "Tue Aug 29 2017 00:00:00 GMT+0100 (BST)", "Wed Aug 30 2017 00:00:00 GMT+0100 (BST)"]; 
 
var myDate = ["Mon Aug 28 2017 00:00:00 GMT+0100 (BST)", "Thu Aug 24 2017 00:00:00 GMT+0100 (BST)"]; 
 

 
//checking atleast one present 
 
var atleastOne = myDate.some(function(item){ 
 
    return between.indexOf(item) > -1; 
 
}); 
 

 
//checking that all present 
 
var all = myDate.every(function(item){ 
 
    return between.indexOf(item) > -1; 
 
}); 
 

 
console.log(all);

0
var between = [Sun Aug 27 2017 00:00:00 GMT+0100 (BST), Mon Aug 28 2017 00:00:00 GMT+0100 (BST), Tue Aug 29 2017 00:00:00 GMT+0100 (BST), Wed Aug 30 2017 00:00:00 GMT+0100 (BST)]; 
var myDate = [Mon Aug 28 2017 00:00:00 GMT+0100 (BST), Thu Aug 24 2017 00:00:00 GMT+0100 (BST)]; 

var bExists = false; 

for (var i = 0; i < between.length; i++) { 
    for (var e = 0; e < myDate.length; e++) { 
     if (between[i] === myDate[e]){ 
      bExists = true; 
    } 
} 

console.log(bExists); 
0

你可以使用Array.some()

的一些()方法測試所述陣列中至少具有一個元件是否通過由提供的功能來實現的測試。

var between = ['Sun Aug 27 2017 00:00:00 GMT+0100 (BST)', 'Mon Aug 28 2017 00:00:00 GMT+0100 (BST)','Tue Aug 29 2017 00:00:00 GMT+0100 (BST)', 'Wed Aug 30 2017 00:00:00 GMT+0100 (BST)']; 
 
var myDate = ['Mon Aug 28 2017 00:00:00 GMT+0100 (BST)', 'Thu Aug 24 2017 00:00:00 GMT+0100 (BST)']; 
 

 
console.log(between.some(date => myDate.includes(date)));

+0

我的數組值不是字符串,它們是唯一問題的日期... – dreamkiller

0

var between = ['Sun Aug 27 2017 00:00:00 GMT+0100 (BST)', 'Mon Aug 28 2017 00:00:00 GMT+0100 (BST)', 'Tue Aug 29 2017 00:00:00 GMT+0100 (BST)', 'Wed Aug 30 2017 00:00:00 GMT+0100 (BST)']; 
 
var myDate = ['Mon Aug 28 2017 00:00:00 GMT+0100 (BST)', 'Thu Aug 24 2017 00:00:00 GMT+0100 (BST)']; 
 

 
    var isExist = false; 
 
    //checking atleast one present 
 
    $.each(myDate ,function(index , value){ 
 
    if(between.indexOf(value) != "-1") 
 
    { 
 
    isExist = true; 
 
    return; 
 
    } 
 
    
 
    }); 
 

 
console.log(isExist);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

相關問題