【问题标题】:How to convert an array to multiple array如何将一个数组转换为多个数组
【发布时间】:2020-07-15 20:02:27
【问题描述】:

我有一个数组 abc = [1, 2, 3]。

如何将其转换为多个数组: [1, 2] , [1, 3], [2, 3]

注意:如果 abc 有 n 项,我们将转换为 n*(n-1) 个数组

【问题讨论】:

  • 4 怎么样?你试过什么?
  • 按照你的问题,应该是 6 个数组,但你只提到了 3 个,你能不能提到其他 3 个,所以我们知道模式。请添加您尝试过的代码。
  • 对不起,我有一个错误,应该是 [1, 2, 3]。我改了

标签: javascript regex


【解决方案1】:

你可以这样做:

const combinations = arr =>
    arr.flatMap((elX, indexX) =>
        arr
            .filter((_, indexY) => indexY == indexX)
            .map(elY => [elX, elY])
    )

结果将是 n*(n-1) 所以对于 [1,2,3] = [[1,2],[1,3],[2,1],[2,3],[ 3,1],[3,2]]

【讨论】:

    【解决方案2】:

    看起来你想列出所有从原始数组组成的组合 您可以在控制台中运行下面的代码以检查它是否符合您的需求

    请注意,在下面的代码中,我使用过滤器来避免同一数组组中的相同值 对不起我的英语不好

    let arr = [1, 2, 3];
    arr = arr.map((currentValue, index, arr)=>{
        return arr.filter((val2, idx2) => val2 !== currentValue);
    });
    document.write(JSON.stringify(arr,null,4));

    编辑:我知道问题需要 6 个数组,上面的代码遵循他给出的示例...如果他的真正意思是找到每个唯一的组合(没有镜像效果),这是替代答案

    【讨论】:

    • 这给出了 3 个数组,而不是请求的 6 个。
    • 是的,它提供了 3 个数组,但是我按照他的 1 2 3 示例,发现他可能不想要任何镜像组合......所以我给了这个,但是如果他真的想要6个数组,他只需要选择其他可以完美回答他的问题的答案,但是感谢您的评论?
    猜你喜欢
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多