самый быстрый способ обнаружить, если дублирующаяся запись существует в массиве JavaScript?

хм. Я никогда не использовал VB.net ни в какой глубине, таким образом, я делаю предположение здесь, но я думаю, что блок 'использования' мог бы быть близко к тому, что Вы хотите.

использование определяет область действия блока для переменной, посмотрите, что примером ниже

using ( int temp = someFunction(param1) ) {
   temp++;  // this works fine
}

temp++; // this blows up as temp is out of scope here and has been disposed

Вот является статья от Microsoft, которая объясняет немного больше

РЕДАКТИРОВАНИЕ: да, этот ответ является неправильным - исходное предположение было неправильным. VB's 'С' больше похож на новые инициализаторы объекта C#:

var yourVariable = new yourObject { param1 = 20, param2 = "some string" };

5
задан Miles 14 October 2009 в 07:40
поделиться

3 ответа

Это выполнит работу с любым массивом и, вероятно, будет максимально оптимизировано для обработки общего случая (поиска дубликата в любом возможном массиве). Для более конкретных случаев (например, массивы, содержащие только строки) вы могли бы сделать лучше, чем это.

function hasDuplicate(arr) {
    var i = arr.length, j, val;

    while (i--) {
        val = arr[i];
        j = i;
        while (j--) {
            if (arr[j] === val) {
                return true;
            }
        }
    }
    return false;
}
6
ответ дан 18 December 2019 в 05:49
поделиться

Если вы отсортируете массив, дубликаты будут рядом друг с другом, чтобы их было легко найти:

arr.sort();
var last = arr[0];
for (var i=1; i<arr.length; i++) {
   if (arr[i] == last) alert('Duplicate : '+last);
   last = arr[i];
}
15
ответ дан 18 December 2019 в 05:49
поделиться

Цикл останавливается при обнаружении первого дубликата:

function has_duplicates(arr) {

    var x = {}, len = arr.length;
    for (var i = 0; i < len; i++) {
        if (x[arr[i]]) {
             return true;
        }
        x[arr[i]] = true;
    }
    return false;

}

Изменить (исправить 'toString 'проблема):

function has_duplicates(arr) {

    var x = {}, len = arr.length;
    for (var i = 0; i < len; i++) {
        if (x[arr[i]] === true) {
             return true;
        }
        x[arr[i]] = true;
    }
    return false;

}

это будет исправлено для случая has_duplicates ([' toString ']); и т. д.

3
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: