带标题和子标题的代码

时间:2018-03-31 07:42:41

标签: javascript jquery html arrays

我希望有一种自动收报机或信息显示系统。

基本上我想要一个标头数组。例如:

var Headers = [
    ["Header 1"],
    ["Header 2"],
    ["Header 3"],
    ["Header 4"]
];

然后为与初始数组相关的子标题有一个数组或多个数组。例如:

var Messages1 = [
    ["Message1 1"],
    ["Message1 2"],
    ["Message1 3"]
];

var Messages2 = [
    ["Message2 1"],
    ["Message2 2"],
    ["Message2 3"]
];

// etc etc etc

我想要实现的是有一个div显示标题,另一个div循环通过与该标题相关的消息。然后转到下一个标题,然后显示与该标题相关的消息。希望这是有道理的。

如果提供了正确的解决方案,阵列的结构可能会改变。

我确定它可能已经完成,但我无法在网上看到一个例子。

即使网上有一个,我也很乐意尝试对代码进行逆向工程。

非常感谢任何帮助。

此致

jmcall10

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全了解您的要求,但您是否正在寻找类似的内容:

var headers = [
    {
        header: 'Header1',
        subheaders: [
            'Subheader1',
            'Subheader2',
            '...'
        ]
    },
    {
        header: 'Header2',
        subheaders: [
            'Subheader3',
            'Subheader4',
            '...'
        ]
    }
]

如果您担心子标题的重复,可以将它们移动到单独的对象:

var subheaders = {
    'subheader1': 'Subheader1',
    'subheader2': 'Subheader2',
    'subheader3': 'Subheader3',
    'subheader4': 'Subheader4',
}

并通过对象键在headers数组中引用它们:

var headers = [
    {
        header: 'Header1',
        subheaders: [
            'subheader1',
            'subheader2',
            '...'
        ]
    },
    {
        header: 'Header2',
        subheaders: [
            'subheader1',
            'subheader2',
            '...'
        ]
    }
]

重要说明:请记住,您应该为子标头对象的键设置正确的命名约定。 subheader1subheader2可能是一个糟糕的选择,即使只在一个例子中使用。 :)

修改

循环使用第一个版本:

headers.forEach(function (item) {
    console.log(item.header);
    item.subheaders.forEach(function (subheader) {
        console.log(subheader);
    });
});

第二个版本也非常相似:

headers.forEach(function (item) {
    console.log(item.header);
    item.subheaders.forEach(function (subheaderKey) {
        if (subheaders.hasOwnKey(subheaderKey)) {
            console.log(subheaders[subheaderKey]);
        }
    });
});

干杯。