我想一直将这种信息存储在内存中。

app_id    admin_id    url           status
123       1           xyz.com       1
123       2           xyz.com       0
539       3           exmaple.com   1
876       4           new.com       1

我主要关心的是我希望查找既简单又快速。喜欢随时查询:
  • 获取特定urlstatusadmin_id
  • 获取特定admin_id的所有app_id

  • 所以我该如何在内存中存储此信息。

    最佳答案

    您可以执行以下操作。为每一行创建一个对象。并将引用保留在数组byAdminId中,作为admin-id,将对象byAppId作为app-id,add函数将在下面执行此操作。 getByAppIdgetByAdminId函数用于检索那些对象。

    var store = (function() {
        var byAdminId = [];
        var byAppId = {};
    
        return {
            add: function(appId, adminId, url, status) {
                var d = {
                    appId: appId,
                    adminId: adminId,
                    url: url,
                    status: status
                };
                if (appId in byAppId) { // You could also use byAppId.hasOwnProperty(appId) here
                    byAppId[appId].push(d);
                } else {
                    byAppId[appId] = [];
                    byAppId[appId].push(d);
                }
                byAdminId[adminId-1] = d;
            },
            getByAppId: function(appId) {
                if (appId in byAppId) {
                    return byAppId[appId];
                }
                return null;
            },
            getByAdminId: function(adminId) {
                return byAdminId[adminId-1];
            }
        };
    })();
    
    store.add(123, 1, "abc.com", 1);
    store.add(123, 9, "xyz.com", 0);
    store.add(539, 3, "exmaple.com", 1);
    store.add(876, 4, "new.com", 1);
    
    var objs = store.getByAppId(123);
    for (var i = 0; i < objs.length; i++) {
        // access admin id as follows
        // objs[i].adminId
    }
    
    var obj = store.getByAdminId(1);
    // access the url and status as follows
    // obj.url
    // obj.status
    

    关于javascript - 数据存储在内存中-Javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8638122/

    10-10 18:59