Подскажите логику приведения списков!



  • У меня есть два списка:

    1-й: _____________ 2-й:
    яблоко___________яблоко зеленое
    груша____________яблоко желтое
    груша____________груша красная
    яблоко___________груша золотая
    груша ___________ груша розовая

    Мне нужно как-то сделать, чтобы первый список установил такой же порядок названия фруктов, как и второй. Пробовал вычислять порядковый индекс второго списка и подстраивать под первый. Неразбериха в коде вышла сумасшедшая с тысячами вложенных циклов, условий и индексов. Явно задать индекс для слова не получится, потому что слово переменное и индекс тоже. Кто подскажет, как это можно осуществить?



  • @olegtut Зачем тебе вообще первый список. Одним потоком записывай в глобальную переменную название фрукта, вторым потоком в список первый выдергивай название это.



  • @olegtut
    если с начала то может лучше подайдет ассоциативный массив для хзранениея такой структуры ключ значение в самый раз.
    но а если массивы уже есть и никакой возможности привести их к хешу нет или нет возможности испоьзовать хеш в качестве промежуточного хранилища.
    это задача сортировки массива через я думаю промежуточный массив,

    arr3 = [];
    for(i = 0; i < arr1.length; ++i){
    	for(j = 0; j < arr2.length; ++j){
    		if(~arr2[j].indexOf(arr1[i]){
    			arr3[j] = arr1[i];
    			break;
    		}
    	}
    }
    arr1 = arr3;
    arr3 = 0;
    

    или чтото вроде того



  • @olegtut
    пордонтес, там отношение один ко многим, тогда я думаю только хеш, ключ -> элемент первого массива, значение -> массив соответствующих элементов второго массива, сортировать таким же образом, только без бряка



  • @ruzne
    Да, именно это и будет супер тяжко)



  • @olegtut
    ??? ну циклвцикле. интераций сильно много? ну да, считать в степени. не тяжко всеравно

    arr3 = [];
    for(i = 0; i < arr1.length; ++i){
    	for(j = 0; j < arr2.length; ++j){
    		if(~arr2[j].indexOf(arr1[i]){
    			arr3[j] = arr1[i];
    		}
    	}
    }
    arr1 = arr3;
    arr3 = 0;
    

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


Log in to reply