在这种情况下,数组大小在javascript中是否重要?

Sto*_*orm 6 javascript arrays memory-management

只要在页面上单击相应的按钮,我就会使用数据库中的项目ID在javascript中创建一个数组.每个数组条目都将存储一个自定义对象.

对于特定的数据页面,特定数据库中的id可以从80123到80223之间的任何数字开始.

所以数组中的第一个条目就像arr [80123].

现在,当我检查阵列的长度时,它显示我80123!即使它只有1个元素,我想到使用关联或字符索引数组,但它们缺少一些我需要的基本排序操作.

现在我的问题是"如果阵列中只有1个元素,但阵列长度为80123,那么阵列实际消耗的内存量是多少?"

更多信息...

基数不断变化80123只是一个例子.

我使用的代码如下:

function ToggleAction(actionButtonID, action) 
    {
        var extractedID = ExtractNumericIdFromTag(actionButtonID);
        var arrayIndexer = extractedID; // Can update this to make array associative

        if(actionItems[arrayIndexer] == null)
        {
            actionItems[arrayIndexer] 
                = new ActionItem(extractedID, action);
        }
        else
        {
            var ai = actionItems[arrayIndexer];
            ai.action = action;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jos*_*ola 6

您的代码没有分配那么多内存,因此您不必担心这一点.Javascript Arrays非常聪明.但是,在这种情况下,我仍然认为你应该使用Object而不是Array ...

var num = 80123;
var obj = {};
obj[num] = { Name: "Josh" };

alert(obj[80123].Name);
Run Code Online (Sandbox Code Playgroud)


jsi*_*ght 3

Javascript 中的数组只是具有一些特殊属性的哈希值(主要是“length”属性将始终返回比最大整数键大 1 的值)。

我不认为任何实现都会仅仅因为您最初将某些内容分配给非常高的索引而分配大量内存。

  • 这是正确的,因为数组 [] 是可以添加属性的对象 {},但这并不意味着数组中的整数索引项是对象哈希的一部分。他们是阵列的一部分。 (2认同)