Сортировать массив по дате ISO 8601

Эта функция работает в O(n log(n) + m log(m)) по сравнению с O(n*m) (как показано в других решениях с циклами / indexOf), которые могут быть полезны, если вы имеете дело со множеством значений.

Однако , потому что ни "a" > 1, ни "a" < 1, это работает только для элементов того же типа.

function intersect_arrays(a, b) {
    var sorted_a = a.concat().sort();
    var sorted_b = b.concat().sort();
    var common = [];
    var a_i = 0;
    var b_i = 0;

    while (a_i < a.length
           && b_i < b.length)
    {
        if (sorted_a[a_i] === sorted_b[b_i]) {
            common.push(sorted_a[a_i]);
            a_i++;
            b_i++;
        }
        else if(sorted_a[a_i] < sorted_b[b_i]) {
            a_i++;
        }
        else {
            b_i++;
        }
    }
    return common;
}

Пример:

var array1 = ["cat", "sum", "fun", "hut"], //modified for additional match
    array2 = ["bat", "cat", "dog", "sun", "hut", "gut"];
intersect_arrays(array1, array2);
>> ["cat", "hut"]
13
задан RobG 1 October 2018 в 02:29
поделиться