删除每个元素后,我想得到所有数组元素的所有组合
例如:
输入:[6,5,3,4]
输出应为:[[5,3,4],[6,3,4],[6,5,4],[6,5,3]]
不使用任何库
我在这段代码中工作,但没有输出正确的结果

    var arrs = [[]];

    function doIt(arr) {
        for (var i = 0; i < arr.length; i++) {
            arrs[i] = arr.filter(function (item) {
                return item != i
            });
        }

        console.log(JSON.stringify(arrs));
    }

    doIt([4, 3, 1]);

最佳答案

您可以使用嵌套方法迭代给定的数组和映射数组,而不使用外部索引的元素。

var array = [6, 5, 3, 4],
    result = array.map((_, i) => array.filter((_, j) => i !== j));

console.log(result);

在代码中,需要检查过滤器回调的索引而不是值。
var arrs = [[]];

function doIt(arr) {
    for (var i = 0; i < arr.length; i++) {
        arrs[i] = arr.filter(function (item, j) {
        //                                   ^ use index instead of value
            return j != i;
            //     ^                           here
        });
    }
    console.log(arrs);
}
doIt([4, 3, 1]);

10-08 05:03