比较javascript中的数组值

比较javascript中的数组值,javascript,json,Javascript,Json,我对这把小提琴有几个(希望是小的)问题 功能正常,但我的逻辑一路混乱 我将“content”数组嵌套在“pageID”的主数组中。问题是,对于HTML呈现,我需要首先查看第一个“page”元素的page\u type\u id,然后查看content元素的panel\u type\u id 我的第一个问题是,第107行的forloop似乎只访问奇数pageid,但如果我删除它,它将访问所有pageid 但另一个真正的问题是,在第109行,我想改变 if (currentJSONobject.c

我对这把小提琴有几个(希望是小的)问题

功能正常,但我的逻辑一路混乱

我将“content”数组嵌套在“pageID”的主数组中。问题是,对于HTML呈现,我需要首先查看第一个“page”元素的page\u type\u id,然后查看content元素的panel\u type\u id

我的第一个问题是,第107行的forloop似乎只访问奇数pageid,但如果我删除它,它将访问所有pageid

但另一个真正的问题是,在第109行,我想改变

if (currentJSONobject.content.length >= 1) {
  leftContent.innerHTML = currentJSONobject.content[i].content;
}
if (currentJSONobject.content.length >= 2) {
  rightContent.innerHTML = currentJSONobject.content[i].content;
} else {
  rightContent.innerHTML = '';
}
要改为使用页面类型id和面板类型id而不是长度,请执行以下操作:

if (currentJSONobject.page_type_id == 2) {
  fullColumn.style.display = "none";
  if (currentJSONobject.content.panel_type_id == 2) {
    leftContent.innerHTML = currentJSONobject.content[i].content;
  }
  if (currentJSONobject.content.panel_type_id == 3) {
    rightContent.innerHTML = currentJSONobject.content[i].content;
  }
}
这似乎很简单,但我不知道如何真正改变它的方式

同样,它正确地循环并显示内容,但我需要能够为几种页面和面板类型发展逻辑,希望有人能看到我在这里的错误

更新:

从接受答案中的三元切换到if/else

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

    fullContent.innerHTML = '';
    rightContent.innerHTML = '';
    leftContent.innerHTML = '';
    topLeftContent = '';
    topRightContent = '';
    bottomLeftContent = '';
    bottomRightContent = '';

    if(currentJSONobject.content[i].page_type_id == 1){

        leftColumn.style.display = "none";
        rightColumn.style.display = "none";
        leftColumnQtr.style.display = "none";
        rightColumnQtrHalf.style.display = "none";
        rightColumnQtr.style.display = "none";
        leftColumnQtrHalf.style.display = "none";

        if(currentJSONobject.content[i].panel_type_id == 1){
            fullContent.innerHTML = currentJSONobject.content[i].content;
        }

    }else if(currentJSONobject.content[i].page_type_id == 2){

        fullColumn.style.display = "none";
        leftColumnQtr.style.display = "none";
        rightColumnQtrHalf.style.display = "none";
        rightColumnQtr.style.display = "none";
        leftColumnQtrHalf.style.display = "none";

        if(currentJSONobject.content[i].panel_type_id == 2){
            leftContent.innerHTML = currentJSONobject.content[i].content;
        } if(currentJSONobject.content[i].panel_type_id == 3){
            rightContent.innerHTML = currentJSONobject.content[i].content;
        }
    }


//   fullContent.innerHTML = '';
//   rightContent.innerHTML = '';
//   leftContent.innerHTML = '';

// fullContent.innerHTML = currentJSONobject.content[i].panel_type_id == 1 ? currentJSONobject.content[i].content : fullContent.innerHTML;

// leftContent.innerHTML = currentJSONobject.content[i].panel_type_id == 2 ? currentJSONobject.content[i].content : leftContent.innerHTML;

// rightContent.innerHTML = currentJSONobject.content[i].panel_type_id == 3 ? currentJSONobject.content[i].content : rightContent.innerHTML;

}
for(var i=0;i
您可以这样做。如果有一定数量的页面类型需要在遇到时进行不同的处理,那么实际上您需要if(三元函数就是这样做的)。我不确定您希望如何显示信息,例如,如果您希望显示重复的93s(for循环遍历每个93s,但仅执行equals运算符就会覆盖它,因此一次只显示一个93s)。或者,如果您想同时显示任何右、左或完整内容。如果要同时显示right、left和full,则需要使用full/left/rightContent.innerHTML替换三元数据“else”部分的“”以保留其值。或者替换为正常的If语句

const-original\u-json=[{
“pageID”:“93”,
“页面类型\ id”:“2”,
“显示id”:“2”,
“幻灯片顺序”:空,
“持续时间”:“74”,
“背景图片”:“images\/bg\u rainbow.svg”,
“面板id”:“86”,
“面板类型id”:“2”,
“cont_id”:“138”,
“contID”:“138”,
“内容”:“\r\n\r\n\r\n\r\n\r\n左93\r\n\r\n”
},
{
“pageID”:“93”,
“页面类型\ id”:“2”,
“显示id”:“2”,
“幻灯片顺序”:空,
“持续时间”:“74”,
“背景图片”:“images\/bg\u rainbow.svg”,
“面板id”:“87”,
“面板类型id”:“3”,
“cont_id”:“139”,
“contID”:“139”,
“内容”:“\r\n\r\n\r\n\r\n\r\n右93\r\n\r\n”
},
{
“pageID”:“94”,
“页面类型\ id”:“1”,
“显示id”:“2”,
“幻灯片顺序”:空,
“持续时间”:“74”,
“背景图片”:“images\/bg\u rainbow.svg”,
“面板id”:“87”,
“面板类型id”:“1”,
“cont_id”:“139”,
“contID”:“139”,
“内容”:“\r\n\r\n\r\n\r\n\r\n整页\r\n\r\n”
},
{
“pageID”:“95”,
“页面类型\ id”:“1”,
“显示id”:“2”,
“幻灯片顺序”:空,
“持续时间”:“74”,
“背景图片”:“images\/bg\u rainbow.svg”,
“面板id”:“87”,
“面板类型id”:“1”,
“cont_id”:“139”,
“contID”:“139”,
“内容”:“\r\n\r\n\r\n\r\n\r\n第2页\r\n\r\n”
},
{
“pageID”:“96”,
“页面类型\ id”:“1”,
“显示id”:“2”,
“幻灯片顺序”:空,
“持续时间”:“74”,
“背景图片”:“images\/bg\u rainbow.svg”,
“面板id”:“87”,
“面板类型id”:“1”,
“cont_id”:“139”,
“contID”:“139”,
“内容”:“\r\n\r\n\r\n\r\n\r\n第3页\r\n\r\n”
},
];
设计数器=0;
var fullContent=document.getElementById('fullContent');
var leftContent=document.getElementById('leftContent');
var righcontent=document.getElementById('righcontent');
var fullColumn=document.getElementById('fullColumn');
var leftColumn=document.getElementById('leftColumn');
var rightColumn=document.getElementById('rightColumn');
//循环使用原始json
//对于每个项目,获取页面ID并查看是否已经为其创建了新的页面对象
//如果有,将原始json中的对象添加到新页面对象的“内容”数组中
//否则,创建一个新的页面对象以放入新数组中
const pages\u array=original\u json.reduce(函数(pages\u array,item,inde