我想创建一个具有2d数组特征的数据结构(获取带有2个x和y输入的特定项),但不使用Javascript中的常规int索引。
例如:我有一个这样的表:
x 200 250 370 500 ...
2 1023 234 22 243
2.5 2323 333 322 223
3.1 ...
...
我想借助数字370、2.5获得输出322。
编写此代码的最佳方法是什么?是否存在可以使用并可能需要更改的现有数据结构,或者我必须编写新的东西?我找不到满足我需求的任何易于使用的东西。
它必须在IE8中工作
修改 数据来自excelsheet。 数据没有“空洞”,因此它是一个完整的块,但是某些x值的y值比其他值大(更高的x值具有更多或相同数量的y值,永远不会更少)
答案 0 :(得分:1)
您可以将x
值作为键并嵌套y
值作为嵌套对象。通过
data[x][y]
var data = {
200: {
2: 1023,
2.5: 2323
},
250: {
2: 234,
2.5: 333
},
370: {
2: 22,
2.5: 322
},
500: {
2: 243,
2.5: 223
}
};
console.log(data[200][2.5]);
答案 1 :(得分:1)
另一种解决方案可能是在数组中实际包含整个表(包括或不包括标题),然后为行或整数坐标设置一个查找对象。
var table = [
[ 'x', 200, 250 ]
[ 2, 1023, 234 ]
]
var xlookup = { 2: table[1] }
// or
var xlookup = { 2: 1 }
var ytable = { 200: 1, 250: 2 }
或者没有标题:
var table = [
[ 1023, 234 ]
[ 232, 333
]
var xlookup = { 2: table[0] }
// or
var xlookup = { 2: 0 }
var ytable = { 200: 0, 250: 1 }
这将使您可以更轻松地遍历表格,例如呈现表格。
而且,这对于IE8用户可能尤其重要,它将防止ykey的重复,例如2和2.5,从而使内存大小更小。
或者,使用Nina Scholz solution,您可以拥有一系列的键来进行迭代:
var data = {
200: {
2: 1023,
2.5: 2323
},
250: {
2: 234,
2.5: 333
},
370: {
2: 22,
2.5: 322
},
500: {
2: 243,
2.5: 223
}
};
var xkeys = [ 200, 250, 370, 500 ]
var ykeys = [ 2, 2.5 ]