Jump to content
  • Sign Up
  • 0

Сравнение двух массивов


Bryant-24
 Share

Question

Добрый день!

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


var ar1 = ["1", "2", "3" ...];
var ar1 = ["4", "3", "2" ...];
for(i=0;i<1000;i++) {
if(ar1[i] > ar2[i]) {
*какое то действие*
} else if(ar1[i] < ar2[i]) {
*какое то действие*
}
}

Т.е. в итоге мне нужно получить название массива, у которого элемент на данном цикле больше. А как это можно узнать не используя прямого сравнения?

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Массивы можно сравнивать вот так:


[1,2,3] < [1,3,3] // return true
[1,2,3] < [1,2,3] // return false
[1,4,3] < [1,3,3] // return false

Сравнение идет по элементам до первого отличия. Но получить индекс элемента не получится.

  • Like 1
Link to comment
Share on other sites

  • 0

Спасибо за подсказку, но в данном случае узнать имя массива, элементы которого больше чем у другого не получится как я понимаю (придется опять делать сравнение, что если true, то значит это второй массив, false -первый, это в данном случае).

Link to comment
Share on other sites

  • 0

Спасибо за подсказку, но в данном случае узнать имя массива, элементы которого больше чем у другого не получится как я понимаю (придется опять делать сравнение, что если true, то значит это второй массив, false -первый, это в данном случае).

ну да. Только как то так:


var aNumber = arr1 < arr2 ? 2 : 1 ;
//или возвращать просто массив у которого какойто по счету элемент больше
var arr = arr1 < arr2 ? arr2 : arr1 ;

Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0

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

Сравнение можно делать до первого несовпадения элемента массива B с элементами массива A

Перебор вообще можно не делать, если длины массива не совпадают, сразу возвращать false

  • Like 1
Link to comment
Share on other sites

  • 0

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

функционал сравнения {

название функции (массив, элемент которого больше)

}

В моем же случае это выглядит так:

функционал сравнения {

название функции (первый массив)

} иначе {

название функции (второй массив)

}

Link to comment
Share on other sites

  • 0

н утак создайте функцию для обработки и применяйте её везде где вам нужно.

что-то типо:


var ar1 = ["1", "2", "3" ...];
var ar1 = ["4", "3", "2" ...];
function myFunc(a1,a2){
for(i=0;i<1000;i++) {
if(a1[i] > a2[i]) {
*какое то действие*
} else if(a1[i] < a2[i]) {
*какое то действие*
}
}
}
var a = myFunc(ar1,ar2);

Edited by wwt
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • sergei8550
      By sergei8550
      Здравствуйте, такой вопрос... если не сложно, подскажите. Есть у меня массив неких элементов с классом .nav-item. Клик по одному из этих элементов element.onclick = function() ... в которой я делаю проверку на наличие класса у дочернего элемента. this.firstElementChild.contains('class') и если у элемента, на который я нажал этот класс есть, то у остальных элементов данного массива этот класс надо убрать, т.е. как радио кнопка, должен быть только один активный элемент.. как эти вот "остальные элементы массива" выбрать? Как написать что у остальных элементов данный classList.remove('class')? Подскажите пожалуйста, как такое вообще организовывается... 
    • DronBoy
      By DronBoy
      Добрый день. вобщем  такой вопрос я передаю значения id через запятую методом GET. Мне его нужно принять как массив и вывести данные из бд где каждый id равен тому id что передаю. Не могу придумать как это сделать.
  • Обсуждения

    • Bobbi86
      Вы отучились на бухгалтера или программиста? Почему спрашиваю. Я финансист, бухгалтер. Естественно, в свое время отучился на курсах 1С, но как экономист. Поэтому могу помочь с развитием именно в этом направлении, так как опыт огромный. 
    • Sider
      Всем привет.Не так давно начал изучать верстку.И кароче захотел создать слайдер на основе html css без js. Застрял булеты работают и стрелки также но только стрелки становяться видимы когда первый раз нажал на булет.До этого их никак немогу настроить.   <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     <style>         .wrapper{             width: 700px;             height: 400px;             margin:0 auto;             border:5px solid green;             border-radius: 20px;             overflow: hidden;             position: relative;         }         .container{             width: 600px;             height: 300px;             border: 5px solid green;             border-radius: 20px;             margin: 20px auto;         }         .slider__items{             display: none;         }         .bullets{             display: flex;             position: absolute;             left:100px;             bottom:30px;         }         .bullets__items{             width: 50px;             height: 15px;             border:2px solid green;             border-radius: 20px;             background-color: lightgreen;             margin: 0 20px;         }             .images{             display: flex;         }         .images__items{             width: 600px;             height: 300px;             border-radius: 20px;             margin-right: 55px;         }               .arrows__prev{             background-image: url(./img/next.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             left: 2px;         }         #slide1:checked ~ .images .image1{             margin-left: 0;         }         #slide2:checked ~ .images .image2{             margin-left: -655px;         }         #slide3:checked ~ .images .image3{             margin-left: -1310px;         }         #slide4:checked ~ .images .image4{             margin-left: -1965px;         }         #slide5:checked ~ .images .image5{             margin-left: -2620px;         }         #slide1:checked ~ .arrow__next .img2,         #slide2:checked ~ .arrow__next .img3,         #slide3:checked ~ .arrow__next .img4,         #slide4:checked ~ .arrow__next .img5,         #slide5:checked ~ .arrow__next .img1{             display: block;             background-image: url(./img/next.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             right: 2px;                 }         #slide1:checked ~ .arrow__prev .img5,         #slide2:checked ~ .arrow__prev .img1,         #slide3:checked ~ .arrow__prev .img2,         #slide4:checked ~ .arrow__prev .img3,         #slide5:checked ~ .arrow__prev .img4         {             display: block;             background-image: url(./img/prev.png);             background-size: contain;             width: 40px;             height: 40px;             position: absolute;             top:150px;             left: 2px;                 }     </style> </head> <body>     <div class="wrapper">         <div class="container">             <div class="slider">                 <input type="radio" name="slider" class="slider__items" id="slide1">                 <input type="radio" name="slider" class="slider__items" id="slide2">                 <input type="radio" name="slider" class="slider__items" id="slide3">                 <input type="radio" name="slider" class="slider__items" id="slide4">                 <input type="radio" name="slider" class="slider__items" id="slide5">                                 <div class="bullets">                     <label for="slide1" class="bullets__items"></label>                     <label for="slide2" class="bullets__items"></label>                     <label for="slide3" class="bullets__items"></label>                     <label for="slide4" class="bullets__items"></label>                     <label for="slide5" class="bullets__items"></label>                 </div>                 <div class="arrow__next">                     <label for="slide1" class="arrows__item img1"></label>                     <label for="slide2" class="arrows__item img2"></label>                     <label for="slide3" class="arrows__item img3"></label>                     <label for="slide4" class="arrows__item img4"></label>                     <label for="slide5" class="arrows__item img5"></label>                 </div>                 <div class="arrow__prev">                     <label for="slide1" class="arrows__item img1"></label>                     <label for="slide2" class="arrows__item img2"></label>                     <label for="slide3" class="arrows__item img3"></label>                     <label for="slide4" class="arrows__item img4"></label>                     <label for="slide5" class="arrows__item img5"></label>                 </div>                 <div class="images">                     <img src="./img/1.jpg" alt="" class="images__items image1">                     <img src="./img/2.jpg" alt="" class="images__items image2">                     <img src="./img/3.jpg" alt="" class="images__items image3">                     <img src="./img/4.jpg" alt="" class="images__items image4">                     <img src="./img/5.jpg" alt="" class="images__items image5">                 </div>             </div>         </div>     </div> </body> </html>
    • Bobbi86
      Актуально, до сих пор актуально. Много кричали, что SEO умирает и умерло. Ничего подобного, СЕО живее всех живых и по-прежнему работает. 
    • stasN1
      Мне нужен такой результат : Не понимаю почему background не применяется вокруг иконок:   Сам код: Html: css: Html: <section class="finish"> <div class="container"> <h2 class="finish_header">По окончании обучения Вы сможете!</h2> <div class="finish_divider"></div> <div class="finish_wrapper"> <finish_item> <div class="finish_round"> <img src="/icons/finish/1 (1).png" alt="" class="finish_icon"> </div> <div class="finish_descr">Создать свой сайт или блог</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/2.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Создать свой сайт или блог</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/3.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Обеспечить ему медленный, но верный рост в ТОП</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/4.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Достигнуть стабильного прироста посетителей</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/5.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Достигнуть стабильного прироста посетителей</div> </finish_item> </div> </div> </section>   Css: .finish .finish_wrapper { margin-top: 41px; display: flex; justify-content: space-between; } .finish .finish_wrapper .finish_item { width: 204px; } .finish .finish_wrapper .finish_item .finish_round { width: 115px; height: 115px; background-color: #b4e2ff; border-radius: 8px; } .finish_descr { font-family: Roboto; font-size: 17px; line-height: 20px; font-weight: 300; color: #efefef; Спасибо!   Уже решил, спасибо! У меня CSS селектор вида:.finish .finish_wrapper .finish_item .finish_roundА должен быть:.finish .finish_wrapper finish_item .finish_roundТ.е. без точки перед finish_item, так как это не класс, а элемент
    • torsar
      Есть вопрос по макету. (psd) Макет более 80мб. На форуме не выложишь. Где лучче залить файл и выложить ссылку на него? (Гугл диск подойдет?) Может у кого, знающего найдется 10 минут, чтоб ответить на вопрос по верстке?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy