Как выбрать неизвестные номера в JavaScript? - PullRequest
0 голосов
/ 24 сентября 2010

Так, например, у меня есть:

массив (2, 1, 3, 4, 5, 6, 7)

и Я уже знаю (2, 1, 3)

Как мне получить (4, 5, 6, 7) если я знаю, что все числа существуют от 1 до 7, а числа, что , я уже знаю

Так что я хочу массив с числами, которых я пока не знаю.

Извините, если звучит глупо: |

1 Ответ

0 голосов
/ 24 сентября 2010

Если A = (2, 1, 3) и B = (1, 2, 3, 4, 5, 6, 7)

Тогда вам нужны необычные элементы (то есть элементы, не существующие ни в одном из них)?Вы можете попробовать это:

//note: could be improved - wrote it quickly
function uncommon(a, b) {

    var map = {};
    var alreadyAdded = {};
    var uncommonElements = [];

    var arrays = (a.length > b.length) ? 
                     {first: b, second: a} : 
                     {first: a, second: b};

    for(var i = 0; i < arrays.first.length; i++) {
        map[arrays.first[i]] = true;
    }

    for(var i = 0; i < arrays.second.length; i++) {
        if(!map[arrays.second[i]]) {
            uncommonElements.push(arrays.second[i]);
            alreadyAdded[arrays.second[i]] = true;
        }
    }

    for(var i = 0; i < arrays.first.length; i++) {
        if(!map[arrays.second[i]] && !alreadyAdded[arrays.first[i]]) {
            uncommonElements.push(arrays.first[i]);
        }
    }

    return uncommonElements;
}

Также обратите внимание, что если бы у вас было:

A = (2, 1, 3, 9) и B = (1, 2, 3, 4, 5, 6, 7), вы получите (2, 1, 3, 9), т.е. элементы не найденыв любом из них.

...