用于存储大量元素的Javascript数据类型

时间:2017-11-02 04:13:41

标签: javascript

我试图在JavaScript中为一个蛇和梯子逻辑(没有ui)编写代码。我需要将它扩展到10,000蛇和梯子。我是JavaScript的新手。我已经成功为5条蛇和5条梯子做了这个,其中2名玩家使用阵列。但我不确定阵列是否能够有效地进行10000个元素的开发和维护。我该怎么用?

var ladderTop = [55, 40];
var ladderBottom = [35, 25];

我使用的阵列与此类似。 Codepen链接:https://codepen.io/nightshade235/pen/oojabm

另外,假设我想从10,000个元素中更改第32个元素,数组是否仍然有效?

2 个答案:

答案 0 :(得分:1)

  

但我不确定数组是否能有效地进行10000个元素的开发和维护。我该怎么用?

但不知怎的,你确定你应该使用别的东西吗?

javascript中巨大的数组没有任何问题

console.time ('add 1 million items')
console.log (
  Array.from (Array (1e6), (_,x) => x)
    .reduce ((x,y) => x + y, 0))
console.timeEnd ('add 1 million items') 
// 499999500000
// add 1 million items: 225ms

将其缩放到10M,没有指数成本

console.time ('add 10 million items')
console.log (
  Array.from (Array (1e7), (_,x) => x)
    .reduce ((x,y) => x + y, 0))
console.timeEnd ('add 10 million items') 
// 49999995000000
// add 10 million items: 2537.070 ms

答案 1 :(得分:0)

我的猜测是你的向导可能会建议组合阵列。例如:

var data = [ { ladder: { Top: 55, Bottom: 35 }, snake: { Top: 22, Bottom:  8 } }, 
             { ladder: { Top: 40, Bottom: 25 }, snake: { Top: 60, Bottom: 43 } } ]

console.log( data[1].snake.Top )

组合数组绝对不是更有效,因为它需要花费更多的时间来解析并创建更多的对象,但如果项目变大,可能会主观上更容易维护。