2016-07-27 58 views
1

我有对象的列表看起来像这样:检查对象的名单有两个项目同一个JavaScript

Object {title: "The Amaze - 2016-12-31 10:00", date: "10/12/2016", time: "10.00am"…} 
Object {title: "The Amaze - 2016-12-31 12:00", date: "31/12/2016", time: "12.00am"…} 
Object {title: "The Amaze - 2016-12-31 10:00", date: "31/12/2016", time: "10.00am"…} 

我通过object这个名单试图循环,有一个条件语句,说如果日期匹配,然后做点什么。

dateArray是我的对象列表。也许不好的做法称它为名称阵列,但..

 for (var j = 0; j < dateArray.length; j++) { 
      if (dateArray[j].date === sDate) { 

       if (dateArray[j].date === dateArray[j].date) { 
        console.log(dateArray[j], "<<<<< Matched"); 
       } 

      } 
     } 

任何人都可以解释我如何实现我想做的事情。

另外,sDate只是一个变量,我在顶部获取当前日期。

+0

你这是在做第二个if语句的指标?你想比较2个对象吗? – Vaibhav

+0

'sDate'是什么? –

+0

是的,第二个if语句是我的问题。它回来匹配的一切。我试图说如果一个object.date匹配另一个然后做一些事情@Vicmathur – PourMeSomeCode

回答

0

你可以使用一个对象,一个循环。该对象用作日期的散列表,如果存在,则找到匹配项。

var array = [{ title: "The Amaze - 2016-12-31 10:00", date: "10/12/2016", time: "10.00am" }, { title: "The Amaze - 2016-12-31 12:00", date: "31/12/2016", time: "12.00am" }, { title: "The Amaze - 2016-12-31 10:00", date: "31/12/2016", time: "10.00am" }]; 
 

 
array.forEach(function (a, i) { 
 
    if (this[a.date]) { 
 
     console.log('match @ ' + i); 
 
    } 
 
    this[a.date] = true; 
 
}, Object.create(null));

建议在保持一个日期

var array = [{ title: "The Amaze - 2016-12-31 10:00", date: "10/12/2016", time: "10.00am" }, { title: "The Amaze - 2016-12-31 12:00", date: "31/12/2016", time: "12.00am" }, { title: "The Amaze - 2016-12-31 10:00", date: "31/12/2016", time: "10.00am" }]; 
 

 
array.forEach(function (a, i) { 
 
    if (this[a.date]) { 
 
     console.log('match @ ' + i + ' with ' + this[a.date]); 
 
    } 
 
    this[a.date] = this[a.date] || []; 
 
    this[a.date].push(i); 
 
}, Object.create(null));

0

试试这个,这将检查每一个组合,你可以改变循环条件

 for (var j = 0; j < dateArray.length; j++) 
     { 
      for (var k =0 ; k < dateArray.length; k++) 
      { 
       if(k==j) 
       { 
        continue; // this is same object 
       } 
       else 
       { 
        if (dateArray[j].date === dateArray[k].date) { 
        console.log(dateArray[j], "<<<<< Matched"); 
       } 
      } 

     } 
相关问题