检查是否仅使用下划线存在重复的数组对

And*_*ndy 2 javascript underscore.js

我想知道如何检查数组中的重复值对是否作为javascript中较大数组的一部分存在.你可以看到有一对重复[1,2]- 所以函数应该返回true.即

var arr = [[1,2], [3,4], [5,6], [7,8], [9,10], [11,12], [13,14], [1,2]]
Run Code Online (Sandbox Code Playgroud)

我试过用这个逻辑给了我一个干净的数组和一个"真实的"

var unique = [];
var done = []; var dup = false;
for(var x = 0; x < arr.length; x++) {
    var myStr = arr[x].toString();

    if(done.indexOf(myStr) != -1) {
        // val already exist, ignore
        dup = true;
        continue;
    }

    done.push(myStr);
    unique.push(arr[x]);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道使用Underscore是否有更优雅的东西?

Ble*_*der 5

最短的方法是使用_.uniqJSON.stringify:

function unique(arr) {
    return _.uniq(arr, JSON.stringify).length === arr.length;
}
Run Code Online (Sandbox Code Playgroud)

但这不会短路,所以与其他方式相比,它有点慢.Tomalak的第二个功能应该更快.