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

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

Ок?
Ответить с цитированием