如何获取所有数组JavaScript对

use*_*503 4 javascript

我需要调用所有可用的数组元素对的函数.像这样:

    [1, 2, 3].pairs(function(pair){
           console.log(pair); //[1,2], [1,3], [2,3]
    });
Run Code Online (Sandbox Code Playgroud)

Mat*_*ant 9

你应该试着告诉我们你自己已经解决了问题,而不仅仅是问我们答案,但这是一个有趣的问题,所以这里:

Array.prototype.pairs = function (func) {
    for (var i = 0; i < this.length - 1; i++) {
        for (var j = i; j < this.length - 1; j++) {
            func([this[i], this[j+1]]);
        }
    }
}

var list = [1, 2, 3];
list.pairs(function(pair){
    console.log(pair); // [1,2], [1,3], [2,3]
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/J3wT5/


ant*_*njs 7

得益于 ECMAScript 标准的不断发展......

let pairs = (arr) => arr.map( (v, i) => arr.slice(i + 1).map(w => [v, w]) ).flat();

pairs([1, 2, 3, 4, 5]);
Run Code Online (Sandbox Code Playgroud)


Ori*_*iol 5

function pairs(arr) {
    var res = [],
        l = arr.length;
    for(var i=0; i<l; ++i)
        for(var j=i+1; j<l; ++j)
            res.push([arr[i], arr[j]]);
    return res;
}
pairs([1, 2, 3]).forEach(function(pair){
    console.log(pair);
});
Run Code Online (Sandbox Code Playgroud)