在数组中找到两个重复值的最佳技术是什么?

时间:2014-12-23 19:33:54

标签: javascript arrays algorithm sorting

我想在数组中找到两个相邻元素== 1:2或1:3, 不计算第三个元素所需的触发器 它的工作原理应该如此,但它看起来很难看,我怎么能优化呢? 可能我可以在每个迭代中跳过,但是如何?

history["1:2", "1:11", "1:9", "1:6", "1:9", "1:2", "1:3", "1:10", "1:9", "1:3", "1:3"];

function getStats(history) {

    trigger = 0;
    dfault1 = 0;

    $.each(history, function(index, value) {
        if (((history[index] == '1:2') || (history[index] == '1:3'))  && ((history[index+1] == '1:2') || (history[index+1] == '1:3'))  ) {
            if (trigger == 0) {
                dfault1++;
                trigger = 1;
            } else {
                trigger = 0;
            }
        } else { 
           trigger = 0; 
        }
    });
    console.log(dfault1);
}

dfault1 = 2 couz

history[5] = '1:2' && history[6] = '1:3' dfault++ (1)

然后

history[9] = '1:3' && history[10] = '1:3' dfault++ (2)

P.S。如果你不理解我的英语,请告诉我,我会更正我的问题

1 个答案:

答案 0 :(得分:1)

这是清理它的一种方法。

function getStats(history) {
    matches = function(value) {
        return value == "1:2" || value == "1:3";
    };

    default1 = 0;
    prev = null;
    $.each(history, function(index, value) {
        if (matches(value) && matches(prev)) {
            default1++;
            prev = null;
            return true;
        }
        prev = value;
    });

    console.log(default1);
}