如果value匹配对象数组Javascript中的item

时间:2016-06-21 17:35:09

标签: javascript jquery

所以我从一个看起来像[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]的AJAX请求中获得了多个对象。

所以我

for (var prop in dateArray) {
     if (dateArray[prop].date === sdate) {

     }
}

sdate是一个包含日期列表的变量。我从jQuery UIdateArray获得的是我的所有对象。

我的对象如下:

0: Object
   available : true
   date : "01/01/2017"
   stock_qty : 0
   time: "07:30pm"
   title: "The seeing"

所以我可以迭代它们,然后检查var A是否与var B中的日期匹配。我正在苦苦思索如何将信息附加到与DOM上的元素匹配的对象中。

在我的循环中,当我找到匹配时,我正试图通过DOM html将对象中的所有信息写入attr,但我正在努力。但是我不确定我是如何引用匹配的,比如在我的循环中它与另一个日期的日期相匹配时,我怎样才能从该匹配中拉出所有对象?

我知道这是一个非常模糊的问题,对不起!我知道自己要做的是什么,我只是无法弄清楚我是如何用JavaScript做的。

提前致谢!

3 个答案:

答案 0 :(得分:1)

假设sdate是一组日期......
您可以循环检查每个object.date是否在此数组中。

我使用了jQuery inArray()

for(i=0; i<dateArray.length; i++){
    if($.inArray(dateArray[i].date,sdate)){
        // If the date defined in an object is found in the «list» sdate...
        // Do something.
    }
}

修改
如果sdate是数组或以逗号分隔的字符串,那么另一种方法是:

在这里,我使用了JavaScript indexOf()方法。

for(i=0; i<dateArray.length; i++){
    if(sdate.indexOf(dateArray[i].date)!=-1){
        // If the "indexOf" a defined object.date is found (not ==-1) in the «list» sdate...
        // Do something.
    }
}

答案 1 :(得分:0)

让我们在你的DOM中想象一下,你想要显示的每个对象都有一个元素。

然后它可能是这样的:

for (var prop in dateArray) {
     if (dateArray[prop].date === sdate) {
        $(".date-holder").append(dateArray[prop].date);
        $(".stock-holder").append(dateArray[prop].stock_qty);
        //...
        //and so on
     }
}

您要将每个对象的值插入空元素(例如<div class="date-holder"></div>)。

答案 2 :(得分:0)

如果sdate是日期列表,您可以使用lo-dash d或运行for循环检查该列表中的特定日期(_.includes):

所以这必须嵌套在另一个for循环中:

dateArray.forEach(
function(dateObjFromServer){
   for (var i=0; i < sdate.length; i++){
       if (dateObjFromServer.date === sdate[i]){
          //do something... 
          //for example: to set an attribute:
          document.getElementById('date-holder').setAttribute('data-date', dateObjFromServer);

       }
    }
});