Jump to content
  • 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

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

    • Например, добавить  .wrapper li {     clear: both; } http://jsfiddle.net/e3f9ozLr/
    • Ты в стрелочной функции из-за того что у тебя одно выражение опустил { }. А это ведет к неявному возврату результата выражения.
    • Здравстуйте, каким образом можно получить доступ к Mathcad Application Server для получения доступа к документам и функциям Mathcad через Интернет. Может быть, есть другой способ связать интернет с Mathcad ?
    • Прошу помочь с заданием: Написать файл скрипта, который генерирует три числа, соответствующие значениям высоты, длины и ширины комнаты. Отобразить в консоли: a.Площадь стен комнаты b.Объём комнаты c.*Объём комнаты за вычетом случайно сгенерированного количества чисел, которые определяет объёмы случайно зашедших в комнату людей. (в итоге запустит скрипт последством консоли) (заранее огромное спасибо)
    • Попробуйте поиграться в этом направлении: Но то что касается применения фильтров с изменением визуального отображения конечного изображения — то повторить его 1:1, скорей всего, не выйдет. Для этого используются изображения с применённым фильтром отдельным файлом
×
×
  • 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