@QTnub
Программист , музыкант , филантроп

Как сравнить один массив с другим и вывести совпадения jquery?

Добрый день , подскажите пожалуйста как мне сравнить два массива , проверить есть ли в них совпадения , и например для каждого совпадения производить действие , например для моей задачи нужно найти чекбоксу val() которого будет равен значению совпадения , у меня есть такой код
var metro_stations = "[[*svod_metro]]" ;
                    var metro_massive = metro_stations.split(',');
                     console.log(metro_massive);
                     
                     $.each( metro_massive , function(i, j){
                         
                         console.log(j);
                     });


мне приходит строка со станциями метро , я преобразую ее в массив , и потом в цикле мне нужно проверить есть ли в этом масиве станции такие же как в списке чекбоксов , и если есть то нажать чекбокс и двигаться дальше
  • Вопрос задан
  • 6282 просмотра
Пригласить эксперта
Ответы на вопрос 2
smanioso
@smanioso
Отмечайте ответы на свои вопросы!
@QTnub Автор вопроса
Программист , музыкант , филантроп
более или менее сотворил что то похожее на правду
function arraysInCommon(arrays){
                        var i, common,
                        L= arrays.length, min= Infinity;
                        while(L){
                            if(arrays[--L].length<min){
                                min= arrays[L].length;
                                i= L;
                            }
                        }
                        common= arrays.splice(i, 1)[0];
                        return common.filter(function(itm, indx){
                            if(common.indexOf(itm)== indx){
                                return arrays.every(function(arr){
                                    return arr.indexOf(itm)!= -1;
                                });
                            }
                        });
                    }
                     
                    
                    var arr = ["Улица Академика Янгеля", "Петровско-Разумовская", "Авиамоторная", " "] ;
                    var massiv = ["Улица Академика Янгеля", "Петровско-Разумовская", "Петровско-Разумовская", "Авиамоторная"];

                    
                    var allArrays = [ arr, massiv];
                    console.log(allArrays);    
                    var matches = arraysInCommon(allArrays).sort();
                    console.log(matches.toString());

этот код делает все почти так как надо , он выводит мне одинаковые станции , но если обратить внимание массивы введены вручную , а когда я пытаюсь подставить вместе них масивы которые собираюсь со страницы и из базы то ничего не происходит , вот полный код
// собираем и танции метро из строки и преобразовываем в массив 
                    var metro_stations = "[[*svod_metro]]" ;
                    var metro_massive = metro_stations.split(',');
                    console.log(metro_massive);
                    
                    // собираем значения всех инпутов станций метро и преобразовываем в массив 
                    var input_metro = $('.metro_title').text();
                    var input_metro_massive = input_metro.split(',');
                    console.log(input_metro_massive);
                    
                    
                    
                    
                    
                    
                    // сравниваем массивы 
                   function arraysInCommon(arrays){
                        var i, common,
                        L= arrays.length, min= Infinity;
                        while(L){
                            if(arrays[--L].length<min){
                                min= arrays[L].length;
                                i= L;
                            }
                        }
                        common= arrays.splice(i, 1)[0];
                        return common.filter(function(itm, indx){
                            if(common.indexOf(itm)== indx){
                                return arrays.every(function(arr){
                                    return arr.indexOf(itm)!= -1;
                                });
                            }
                        });
                    }
                     
                    
                    var arr = ["Улица Академика Янгеля", "Петровско-Разумовская", "Авиамоторная", " "] ;
                    var massiv = ["Улица Академика Янгеля", "Петровско-Разумовская", "Петровско-Разумовская", "Авиамоторная"];

                    
                    var allArrays = [ metro_massive, input_metro_massive];
                    console.log(allArrays);    
                    var matches = arraysInCommon(allArrays).sort();
                    console.log(matches.toString());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы