在父数组元素上使用if / else进行javascript

时间:2018-08-15 18:44:54

标签: javascript html arrays json

我正在发布完整的脚本以供参考。

我目前正在遍历JSON对象中的数组,然后根据内容ID将内容应用于html div。这可以正常工作,但是我的问题是基于父数组的逻辑,以便隐藏所有不必要的DIV。数组如下:

enter image description here

我的数组有一个带有pageID和pageType的父元素,并包含一个带有实际内容的“ Content”数组。我正在遍历内容以应用它,但我希望能够在每次迭代时说出“如果父pageType为n,则隐藏x div”,就像代码段的这一部分一样:

if(currentJSONobject.page_type_id == 1){            
      //Some stuff
}else if(currentJSONobject.page_type_id == 2){            
      //Some stuff
}

所以我的内容可以正确填充并且迭代是适当的,但是如何基于每次迭代的父pageType设置适当的div来隐藏?

const obj = [{
    "pageID": "93",
    "page_type_id": "2",
    "display_id": "2",
    "slide_order": null,
    "duration": "74",
    "background_img": "images\/bg_rainbow.svg",
    "panel_id": "86",
    "panel_type_id": "2",
    "cont_id": "138",
    "contID": "138",
    "content": "\r\n\r\n\r\n<\/head>\r\n\r\nLeft 93<\/p>\r\n<\/body>\r\n<\/html>"
  },
  {
    "pageID": "93",
    "page_type_id": "2",
    "display_id": "2",
    "slide_order": null,
    "duration": "74",
    "background_img": "images\/bg_rainbow.svg",
    "panel_id": "87",
    "panel_type_id": "3",
    "cont_id": "139",
    "contID": "139",
    "content": "\r\n\r\n\r\n<\/head>\r\n\r\nRight 93<\/p>\r\n<\/body>\r\n<\/html>"
  }
];

let counter = 0;

const pages_array = obj.reduce(function(pages_array, item, index, obj) {
const current_pageID = item.pageID;
const current_pageType = item.page_type_id;
const exisiting_page = pages_array.find(page => page.pageID === current_pageID);

if (exisiting_page === undefined) {
  const new_Page = {
    pageID: current_pageID,
    pageType: current_pageType,
    content: [item]
  }
  pages_array.push(new_Page);
} else {
  exisiting_page.content.push(item)
}

return pages_array;
}, []);

setInterval(()=>{
const currentJSONobject = pages_array[counter]; 

   for(var i = 0; i < currentJSONobject.content.length; i++){            

        if(currentJSONobject.page_type_id == 1){
            //Some stuff
        }else if(currentJSONobject.page_type_id == 2){
            //Some stuff
        }else if(currentJSONobject.page_type_id == 3){
            //Some stuff
        }else if(currentJSONobject.page_type_id == 4){
            //Some stuff
        }
    }

    console.log(pages_array[counter])

    counter += 1; 
    if (counter === pages_array.length){
        counter = 0; 
    }
}, 3500)     

console.log(obj);
console.log(pages_array);

1 个答案:

答案 0 :(得分:2)

这是正确的评估:

if(parseInt(pages_array[counter].pageType) == 1){
    console.log("Paren pageType => ", pages_array[counter].pageType);
}

您的问题是您正在page_type_id中查找属性currentJSONobject,而不是在pages_array[counter]中查找父对象