0

我正在尝试在javascript中构造一个多维数组,到目前为止没有成功。我在 Stackoverflow 上阅读了其他一些帖子,并阅读/观看了有关该主题的教程,都对我有所帮助,但我无法让它发挥作用。

大多数时候我收到以下错误:

未捕获的 SyntaxError:意外的令牌

基本上,我有一个表格,我网站的访问者可以输入他们的年龄、血压、胆固醇以及他们是否吸烟。

riscTable = {      
'68': {    // AGE
    '170': {    // BLOODPRESSURE
                   // M, MS,  W, WS
        '275':     { 27, 48, 16, 30 },  // CHOLESTEROL
        '225':     { 22, 41, 13, 24 },  // CHOLESTEROL
        '175':     { 18, 34, 10, 20 },  // CHOLESTEROL
        '0':       { 15, 28, 8, 16 }    //  ...
    },
    '150': {
        '275':     { 20, 36, 11, 22 },
        '225':     { 16, 30, 9, 18 },
        '175':     { 13, 25, 7, 14 },
        '0':       { 10, 20, 6, 12 }
    },
    '130': {
        '275':     { 14, 27, 8, 15 },
        '225':     { 11, 22, 6, 13 },
        '175':     { 9, 18, 5, 10 },
        '0':       { 7, 15, 4, 8 }
    },
    '0': {
        '275':     { 10, 19, 5, 11 },
        '225':     { 8, 16, 4, 9 },
        '175':     { 6, 13, 3, 7 },
        '0':       { 5, 10, 3, 6 }
    }
},
'63': ...  // AGE
}

我添加了注释标签以使我的数组结构更易于理解。

我想做的是用数学逻辑遍历键值(始终将最高值放在顶部)以确定结果。

上面的代码示例:

一位不吸烟的女性,65 岁(身高为 63,因此她属于 68 数组),血压为 150,胆固醇为 175,应返回值:7

我做错了什么来得到“Uncaught SyntaxError: Unexpected token”错误,我怎样才能让我的脚本在数组上运行以返回正确的结果,如上面的示例所示?

感谢您阅读我的问题,我希望有人可以帮助我。

4

1 回答 1

6

包含实际值的代码部分正在尝试使用对象表示法。

'170': {    // BLOODPRESSURE
                   // M, MS,  W, WS
        '275':     { 27, 48, 16, 30 },  // Should be an array
        '225':     { 22, 41, 13, 24 },  // Should be an array
        '175':     { 18, 34, 10, 20 },  // Should be an array
        '0':       { 15, 28, 8, 16 }    //  ...
    },

把这些变成数组。

var riscTable = {      
'68': {    // AGE
    '170': {    // BLOODPRESSURE
                   // M, MS,  W, WS
        '275':     [ 27, 48, 16, 30 ],  // Is an array
        '225':     [ 22, 41, 13, 24 ],  // Is an array
        '175':     [ 18, 34, 10, 20 ],  // Is an array
        '0':       [ 15, 28, 8, 16 ]    //  ...
    },//Rest of object
}};

然后,您可以按如下方式访问这些值:

alert(riscTable['68']['170']['275'][0]);  //68 Year old male with bp of 170 and cholesterol of 275

请注意,这不是多维数组。它是一个对象,具有分配给它们的其他对象的属性。只有最后一个属性 , 275,225包含实际1750数组。

我会犹豫将这个复杂的对象转换为数组,因为它会产生管理每个数组和后续嵌套数组的索引的需要。请记住,多维数组只不过是嵌套在数组中的数组。如果您采用这种方法,您将需要知道第一个索引对应于 68 岁的年龄范围,以及与其他年龄范围相关的索引以及胆固醇和血压等嵌套属性。

于 2013-03-03T22:40:39.173 回答