Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.05.2016, 11:30
Новичок на форуме
Отправить личное сообщение для Pinguin Посмотреть профиль Найти все сообщения от Pinguin
 
Регистрация: 28.04.2016
Сообщений: 3

прошу помочь в оптимизации скрипта
Добрый день.
В скрипте задаются значения переменных a1, a2, a3, a4 и сравниваются с переменными x1, x2, x3, x4, x5, x6, x7.
Значения переменных x1-x7, не совпавшие с a1-a4, выводятся в консоль.

Скрипт крайне корявый и в случае его расширения он станет очень большим и плохо редактируемым. Планируется добавление переменных a и x. Прошу помочь, как его можно привести в адекватный вид.

Спасибо.

var a1 = 5;
var a2 = 3;
var a3 = 2;
var a4 = 1;

var x1 = 1;
var x2 = 2;
var x3 = 3;
var x4 = 4;
var x5 = 5;
var x6 = 6;
var x7 = 7;


if (x1 != a1 && x1 != a2 && x1 != a3 && x1 != a4)
console.log (x1);

if (x2 != a1 && x2 != a2 && x2 != a3 && x2 != a4)
console.log (x2);

if (x3 != a1 && x3 != a2 && x3 != a3 && x3 != a4)
console.log (x3);

if (x4 != a1 && x4 != a2 && x4 != a3 && x4 != a4)
console.log (x4);

if (x5 != a1 && x5 != a2 && x5 != a3 && x5 != a4)
console.log (x5);

if (x6 != a1 && x6 != a2 && x6 != a3 && x6 != a4)
console.log (x6);

if (x7 != a1 && x7 != a2 && x7 != a3 && x7 != a4)
console.log (x7);
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2016, 12:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Разница массивов
Pinguin,
<script>
function fn(b, a) {
    a = a.slice();
    b = b.slice();
    return a.filter(function(a) {
        return !~b.indexOf(a)
    })
};
document.write(fn([5,3,2,1],[1,2,3,4,5,6,7])+"<br>");
</script>

Последний раз редактировалось рони, 04.05.2016 в 12:10.
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2016, 12:39
Новичок на форуме
Отправить личное сообщение для Pinguin Посмотреть профиль Найти все сообщения от Pinguin
 
Регистрация: 28.04.2016
Сообщений: 3

рони,
гениально, спасибо. Теперь буду разбираться, как оно работает.

Последний раз редактировалось Pinguin, 04.05.2016 в 12:42.
Ответить с цитированием
  #4 (permalink)  
Старый 04.05.2016, 14:59
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Pinguin,
Также можно посмотреть в сторону небольших библиотек lodash или underscore, поддерживающих фичи для коллекций, массивов и функций. Там всё делается в одну строчку.
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
    <script>
        alert(_.difference([1, 2, 3, 4, 5, 6, 7], [5, 3, 2, 1]));
    </script>
Ответить с цитированием
  #5 (permalink)  
Старый 04.05.2016, 17:04
Новичок на форуме
Отправить личное сообщение для Pinguin Посмотреть профиль Найти все сообщения от Pinguin
 
Регистрация: 28.04.2016
Сообщений: 3

destus,
спасибо за информацию.
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2016, 01:05
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

function difference(a, b) {
  b.length > a.length && ([b,a] = [a,b]);
  return a.filter(function(a) {
      return b.indexOf(a) == -1;
  });
}
var a = [1,2,3,4,5,6,7], b = [5,3,2,1];
alert(difference(a, b)); //[ 4, 6, 7 ]
alert(difference(b, a)); //[ 4, 6, 7 ]

Вариант.

Последний раз редактировалось Vlasenko Fedor, 05.05.2016 в 01:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить проблему! Очень прошу помочь! sizdim Элементы интерфейса 2 06.04.2015 07:59
Прошу помочь найти ошибки в функциях Georka Элементы интерфейса 1 02.10.2014 10:08
Прошу помочь оптимизировать код Master_Sergius Общие вопросы Javascript 16 05.08.2014 19:16
Прошу помочь в изменении внешнего вида скрипта обратного отсчета 8585 Ваши сайты и скрипты 5 18.07.2013 11:42
Прошу помочь с проверкой формы ввода Гость Общие вопросы Javascript 2 08.03.2008 12:10