Подскажите логику приведения списков!
-
У меня есть два списка:
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;
все, будет именно в первом списке будут яблоки повторяющиеся, во втором ничего не изменится, по индексу яблока цветного в первом списке будет яблоко.
можно предварительно избавится от повторяющихся элементов в первом списке, я щас не думаю может это и не существенно но уменьшит число интераций