簡體   English   中英

推入JavaScript中的2D數組

[英]Push to 2D Arrays in Javascript

我試圖了解2D數組應如何在Javascript中工作,而我目前正在嘗試將數據存儲在類別中。 在這種情況下,我有一個地圖列表,例如...

arena_badlands
arena_dust
ctf_2fort
cp_dustbowl

我想創建一個2D數組,其中按類型(競技場,ctf,cp)分類,以便可以更有效地處理數據。 無論出於何種原因,我都無法按預期使用push()方法。 誰能幫我分享我做錯了什么?

由於列表中的地圖不一定按類型排序,因此它使我無法創建單個舞台地圖數組,然后將其放置在availableMaps中。

var availableMaps = [[]];       // Store all maps on the server which can be loaded

function getMaps()
{
    $.ajax({
        type: "POST",
        url: "handler.php",
        data: { 'action': 'getMaps' },
        dataType: 'json',
        success: function(data)
        {
            var maps = data['maps'];
            var counter = 0;

            $.each( maps, function( key, value )
            {
                // Split map name to fetch the type (ex: arena_badlands would be an 'arena' map)
                var parts = value.split("_");
                var mapType = parts[0];

                availableMaps[mapType][counter].push(value);

                counter++;
            });
        }
    });
}

這是一種方法:

var inputs = ["arena_badlands", "arena_dust", "ctf_2fort", "cp_dustbowl"];

function getAvailableMaps(inputs) {
    var map = {}, parts, name, item, items;
    for (var i = 0; i < inputs.length; ++i) {
        parts = inputs[i].split('_');
        name = parts[0];
        item = parts.slice(1).join("");
        items = map[name] || (map[name] = []);
        items.push(item);
    }
    return map;
}

var availableMaps = getAvailableMaps(inputs);

它在根目錄處創建一個用於保存命名索引的對象,並使用一個數組存儲項目列表。

這也是另一種方法:

var inputs = ["arena_badlands", "arena_dust", "ctf_2fort", "cp_dustbowl"];

function getAvailableMaps(inputs) {
    var map = {}, input, name, item, items;
    for (var i = 0, i2; i < inputs.length; ++i) {
        input = inputs[i];
        i2 = input.indexOf("_");
        if (i2 == -1) continue; // (or throw an error)
        name = input.substring(0, i2);
        item = input.substring(i2+1);
        items = map[name] || (map[name] = []);
        items.push(item);
    }
    return map;
}

var availableMaps = getAvailableMaps(inputs);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM