Метод POST для Джанго

Скажем, у меня есть структура, подобная следующей:

var aObject = {
    items: [],
    children: {}
}

Дети - ассоциативный массив, содержащий больше aObjects. Таким образом, это может выглядеть так:

var aObject = {
    items: [],
    children: {
        "subgroup1": {
            items: [],
            children: {}
        },
        "subgroup2": {
            items: [],
            children: {}
        }
    }
}

У меня есть элемент, который содержит массив подгрупп:

["subgroup1", "subgroup1a"]

Каждая подгруппа - это «местоположение». Элемент должен быть размещен по адресу:

aObject.children[array[0]].children[array[1]].items

На каждом уровне мы должны проверить, существуют ли дети [array [i]], а если нет, создайте его. Вы не можете просто написать aObject.children [array [0]]. Children [array [1]]. Items.push (item), потому что дети [array [0]] могут и не существовать, и мы получим ошибку.

Это можно решить с помощью рекурсии! (AngularJS)

function recursive(aLevel, aItem, aArray, aIndex){
    var lLevel = aLevel;

    // If we have reached the end of the array
    if (aIndex === aArray.length){
        // Insert
        aLevel.items.push(aItem);
    } else {

        // If the subgroup doesn't exist, create it
        if (typeof aLevel.children[aArray[aIndex]] === 'undefined'){
            aLevel.children[aArray[aIndex]] = {
              items: [],
              children: {}
            };
        }

        // Move into
        recursive(aLevel.children[aArray[aIndex]], aItem, aArray, aIndex+1);
    }
}

aObject = {
    items: [],
    children: {},
}

angular.forEach(items, function(item, i){
    var location = item.location;

    if (location.length == 0){
        aObject.items.push(item);
    } else {
        recursive(aObject, item, location, 0);
    }
});

Окончательный объект aObject будет выглядеть следующим образом:

var aObject = {
     items: [],
     children: {
        "subgroup1": {
            items: [],
            children: {
                "subgroup1a": {
                    items: [item],
                    children: {}
                }
            }
        },
        "subgroup2": {
            items: [],
            children: {}
        }
    }
}
0
задан sirkpea 18 March 2019 в 00:54
поделиться