首页 > 其他分享 >获取数组中元素的所有组合方式

获取数组中元素的所有组合方式

时间:2024-02-03 10:44:23浏览次数:24  
标签:... const 数组 元素 list restWords 获取 combine words

代码

/**
 * 获取 words 成员的所有 组合 方式
 * @param {(string | number)[]} words
 * @return {(string|number)[][]}
 */
function combine (words) {
  const list = []
  words.forEach((word, idx) => {
    const restWords = [...words.slice(0, idx), ...words.slice(idx + 1)]
    if (!restWords.length) { // 最后一位了
      list.push([word])
    } else {
      const groups = combine(restWords)
      groups.forEach(group => {
        list.push([word, ...group])
      })
    }
  })
  return list
}

输出

combine(['A', 'B', 'C'])
[
  [ 'A', 'B', 'C' ],
  [ 'A', 'C', 'B' ],
  [ 'B', 'A', 'C' ],
  [ 'B', 'C', 'A' ],
  [ 'C', 'A', 'B' ],
  [ 'C', 'B', 'A' ]
]

标签:...,const,数组,元素,list,restWords,获取,combine,words
From: https://www.cnblogs.com/taohuaya/p/18004410

相关文章

  • 「KDOI-03」构造数组
    「KDOI-03」构造数组题目描述你现在有一个长度为\(n\)的数组\(a\)。一开始,所有\(a_i\)均为\(0\)。给出一个同样长度为\(n\)的目标数组\(b\)。求有多少种方案,使得通过若干次以下操作,可以让\(a\)数组变成\(b\)。选出两个不同的下标\(1\leqi<j\leqn\),并将\(a_i\)......
  • 2024-02-03:用go语言,你有 k 个背包。给你一个下标从 0 开始的整数数组 weights, 其中 we
    2024-02-03:用go语言,你有k个背包。给你一个下标从0开始的整数数组weights,其中weights[i]是第i个珠子的重量。同时给你整数k,请你按照如下规则将所有的珠子放进k个背包。没有背包是空的。如果第i个珠子和第j个珠子在同一个背包里,那么下标在i到j之间的所有珠......
  • 中国移动光猫ZN-M160G获取超密,并修改为桥接
    登录光猫的后台,默认为192.168.1.1,账号和密码使用光猫背面的即可,这个账户的权限低,但是通过修改也能折腾登录成功后访问一下网址http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch然后会看到启用Telnet,我们勾选保存后重启。账号密码也许可以自行修改,我保......
  • 数组的中心位置-od-python
    数组的中心位置时间限制:1s空间限制:256MB限定语言:不限题目描述:给你一个整数数组nums,请计算数组的中心位置。数组中心位置是数组的一个下标,其左侧所有元素相乘的积等于右侧所有元素相乘的积。数组第一个元素的左侧积为1,最后一个元素的右侧积为1如果数组有多个中心位置,应该返回......
  • 手把手教你搭建属于自己的网站(获取被动收入),无需服务器,使用github托管
    大家好,我是亚洲著名程序员青松,本次教大家如何搭建一个属于自己的网站。下面是我自己搭建的一个网站,是一个网址导航网站。托管在了github上面,目前已经运营了三个月,每天的访问量大约有100ip左右。下图是在51.la上面的统计,这个网站是我在2023年11月份发布的,刚发布的时候流量比较高......
  • 力扣 34. 在排序数组中查找元素的第一个和最后一个位置
    Problem: 34.在排序数组中查找元素的第一个和最后一个位置思路找到大于等于target的下标,然后遍历之后的数组,找到最后的下标。classSolution{public:intf(vector<int>&nums,inttarget){intl=0,r=nums.size()-1;intmid=floor(l+(r-l)*1.0/2);......
  • MyBatis获取参数值的两种方式
    MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值。${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添......
  • flat 拍平数组 手写flat拍平数组
    //flat拍平一维数组letflaoatArr=[1,3,5,6,3,6,[3,46,465,3]]letres=flat(flaoatArr)console.log(res);letres=flaoatArr.flat()console.log(res);//手写float数组Array.protot......
  • JAVA数组练习代码
    一维数组的有序插入思路代码点击查看代码importjava.util.Scanner;/***@authorLittleBear*@date2024-02-02-16:57*/publicclassseqInsertion{publicstaticvoidmain(String[]args){System.out.println("pleaseinputyournum:");......
  • 微信小程序如何控制元素的显示和隐藏
    Hello大家好我是咕噜铁蛋!在微信小程序开发中,控制元素的显示和隐藏是非常常见的需求。通过控制元素的显示和隐藏,我们可以根据用户的操作或特定的条件来动态地展示或隐藏某些内容,从而提升用户体验。在本文中,我将分享如何在微信小程序中实现元素的显示和隐藏的方法。使用wx:if和hidden......