2016-11-05 42 views
-2

如果这个问题以前曾被问过,但是我发现很难用以前可能已经问过的方式来提出问题,我很抱歉。几个大数组,或一个大数组变量?

问:它更有效地碰到这样的: mass[128] = {0.0} speed[128] = {0.0} age[128] = {0}

或者: properties[128] = {mass=0.0, speed=0.0, age=0}

为什么呢?是否有一条简单的规则需要时刻铭记,(比很多小的更好的阵列更好)?

我在使用Chrome编写JS。经常阅读和写作元素。

非常感谢!

+0

性质[128] =你不保持三个不同的arrays..everything可以看出{质量= 0.0,速度= 0.0,年龄= 0} ..我觉得这是做的最好的做法......有了这个在属性数组中,所以内存中的一个数组与三个内存中的数组 – Geeky

+1

如果这些示例是有效的JavaScript,这将有所帮助。像mass [128] = {0.0}'这样的东西可能真的有很多不同的东西。无论如何,我无法想象会有什么实际的区别。 – JJJ

+0

两种方法都是SyntaxError,所以它是一样的。 – Oriol

回答

2

总的来说,这里的答案是:做什么最能让你写出最简单,最清晰的代码;并担心任何性能或内存问题,如果你真的遇到一个。

使用与命名属性对象的数组,可能会在对现代JavaScript引擎的访问时间方面会更有效率,并可能会在内存使用方面效率较低。在这两种情况下,区别将是令人难以置信的轻微,可能不易察觉。

如果值是数字和你的数组可以是固定大小的,你可以使用typed arrays,因为他们真的是数组(其中为normal arrays aren't 除非JavaScript引擎可以做到这一点作为优化)。但是也有缺点为键入的阵列(其被固定大小,例如),如此反复,如果和当需要...对象的数组与命名属性的

实施例:

var properties = [ 
    {mass: 0, speed: 0, age: 0}, 
    {mass: 1, speed: 1, age: 1}, 
    // ... 
]; 

如果你使用ES2015(你说你正在使用Chrome,这样你就可以),你可能会做一个const

const properties = [ 
    {mass: 0, speed: 0, age: 0}, 
    {mass: 1, speed: 1, age: 1}, 
    // ... 
]; 

只有使得properties恒定的,而不是数组的内容它指向,因此您仍然可以根据需要添加,删除或修改条目。


这是对我的贫血的小博客的一篇文章。