Показать сообщение отдельно
  #32 (permalink)  
Старый 12.01.2012, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Livaanderiamarum,
Итого )))
function duplicat(b, c) {
    if(b.length != c.length) return !1;
    // должна совпадать  размерность исходных массивов -> c.length == b.length
    for (var d = 0, e = {},a = 0; a < b.length; a++) e[b[a]]? e[b[a]]++:e[b[a]]=1 ;
    // создаём обьект e где ключами являются значения первого массива
    // e[b[a]]? -> ключ есть ? это на тот случай если значения повторятся в массиве
    // увеличиваем значение ключа на 1
    // иначе если ещё ключа нет с таким значением
    // создаём ключ со значением 1
    for (a = 0; a < c.length; a++) e[c[a]] && d++ && e[c[a]]--;
    // пробегаемся по второму массиву
    // смотрим если значение элемента массива  среди ключей
    // нами созданного обьекта  и его значение ещё не ноль -> e[c[a]]
    // если ключ есть, увеличиваем счётчик d -> d++
    // значение самого ключа уменьшаем
    return d == b.length;
    // проверяем счётчик d c длиной массива b
    // они должны совпадать ->  d == b.length
    };
Ответить с цитированием