javascript - 您可以使用 Array.flatMap 在 Javascript 中返回 n 个选择 k 个组合吗?

标签 javascript arrays probability

例如,这是 5 选择 2:

    var array = [0,1,2,3,4];
    
    var result = array.flatMap(
        (v, i) => array.slice(i+1).map(w => [v, w]) 
    );
    
    console.log(result);

我怎样才能使用这种方法做 5 选择 3?

最佳答案

只需添加另一层嵌套:

var array = [0,1,2,3,4];

var result = array.flatMap((v, i) =>
    array.slice(i+1).flatMap((w, j) =>
        array.slice(i+1+j+1).map(u =>
            [v, w, u]
        )
    )
);

console.log(result);
在这一点上,使用递归可能更容易:

function choose(arr, k, prefix=[]) {
    if (k == 0) return [prefix];
    return arr.flatMap((v, i) =>
        choose(arr.slice(i+1), k-1, [...prefix, v])
    );
}

console.log(choose([0,1,2,3,4], 3));

关于javascript - 您可以使用 Array.flatMap 在 Javascript 中返回 n 个选择 k 个组合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64414816/

相关文章:

javascript - 返回和为给定值的所有子集(子集和问题)

c# - 如何创建带有滚动的复选框列表?

c# - 错误 : Index out of bounds of array

machine-learning - 一般来说,如何解释多标签分类器产生的概率?

algorithm - 在哪里可以找到自然语言处理的维特比算法转换值?

javascript - 后退按钮/退格键不适用于 window.history.pushState

javascript - Ember.js - afterRender 在 CSS 完成之前触发

javascript - 在选择元素中上下移动选项的方法

javascript - 仅当 Firestore 中的值为 true 时才使用 V-IF 显示按钮

python - python 中的随机森林 : final probabilities in classification problems