можем ли мы использовать рекурсию для этого случая в многомерных массивах, чтобы выдвинуть новые значения

Вы можете использовать функцию объектива c Runtime для сопоставления imagename с UImageView.

Сначала импортируйте #import <objc/runtime.h> в свой класс

, затем выполните свой код, как показано ниже:

NSString *filename = @"exampleImage";
UIImage *image = [UIImage imagedName:filename];
objc_setAssociatedObject(image, "imageFilename", filename, OBJC_ASSOCIATION_COPY);
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//You can then get the image later:
NSString *filename = objc_getAssociatedObject(imageView, "imageFilename");

Надеюсь, это вам поможет.

0
задан poppop 16 January 2019 в 13:38
поделиться

2 ответа

Подход, ищущий те же элементы, что и у нового элемента, подсчитывающий и проверяющий в соответствии с требуемым максимумом и подталкивающий либо к фактическому индексу (если счет меньше), либо к следующему элементу (если в начале или больше, чем требуемый счет) ).

этот подход берет массив с элементами и добавляет каждый элемент, ища ситуацию container.

function addFruit(fruit) {
    const 
        addFruits = (s, v) => s + +(v === fruit),
        max = { apple: 3, mango: 2, stawberry: 4, default: Infinity };

    var i = 0;

    while (i < container.length) {
        if (container[i].reduce(addFruits, 0) < (max[fruit] || max.default)) break;
        i++;
    }
    container[i] = container[i] || [];
    container[i].push(fruit);
}


var data = ["apple", "apple", "mango", "stawberry", "banana", "mango", "stawberry", "banana", "apple", "apple", "stawberry", "banana", "apple", "mango", "stawberry", "stawberry", "stawberry", "banana", "stawberry"],
    container = [];

data.forEach(addFruit);

console.log(container);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
ответ дан Nina Scholz 16 January 2019 в 13:38
поделиться

Я думаю, что в вашем вопросе есть большой пробел, не определена ни одна цель, или сколько «фруктов» будет в контейнере и т.д.

Как я понял из вашего вопроса, вы хотите полностью заполнить массив 2-го измерения цели. Поэтому я набросал какой-то кусок кода:

    var appleTarget = 5;
    var mangoTarget = 7;
    var strawberryTarget = 12;
    var kindOfFruit = ["apple", "mango", "strawberry"];

    function fruitCount(subFruitContainer, fruit)
    {
        return subFruitContainer.filter(el => el === fruit).length;
    }

    function insertFruit(dimension , fruit)
    {
        dimension.push(fruit);
    }

    function stableContainer(fruitContainer)
    {
        var selectedTarget;
        kindOfFruit.forEach(function(fruitKind) {
            fruitContainer.forEach(function(dimension){
                if(fruitKind == "apple") selectedTarget = appleTarget;
                else if(fruitKind == "mango") selectedTarget = mangoTarget;
                else if(fruitKind == "strawberry")  selectedTarget = strawberryTarget;
                else selectedTarget = 0;
                var fruitKindCount = fruitCount(dimension, fruitKind);
                if(fruitKindCount < selectedTarget) 
                {
                    for(var i = selectedTarget-fruitKindCount; i > 0; i--) 
                    {
                        insertFruit(dimension, fruitKind);
                    }
                }
            });
        });

        console.log("stabled container");
        console.log(fruitContainer);
    }

    var container = [
        ["apple", "apple", "banana", "mango", "stawberry", "banana", "banana"],
        ["banana", "mango", "stawberry", "stawberry"],
        ["apple", "mango", "mango"]
    ];

    stableContainer(container);
0
ответ дан Seyhmus Gokcen 16 January 2019 в 13:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: