3 回答
TA贡献1827条经验 获得超7个赞
function combine (arr, step = 1) {
const result = []
for (let i = 0; i < arr.length; i++) {
const head = arr.slice(i, i + step).join('-') + '-'
for (let j = i + step; j < arr.length; j++) {
result.push(head + arr[j])
}
}
return step < arr.length ? result.concat(combine(arr, step + 1)) : result
}
console.log(combine([3, 2, 6, 9]))
TA贡献1811条经验 获得超6个赞
let nums = [3, 2, 6, 9];
let cut = (arr, index) => arr.slice(index + 1, arr.length - index)
let map = (prefix, suffix) => {
suffix.forEach((item, index) => {
console.log(`${prefix}-${item}`);
map(`${prefix}-${item}`, cut(suffix, index))
})
}
nums.forEach((num, index) => map(num, nums.slice(index + 1, nums.length)))
TA贡献1873条经验 获得超9个赞
var arr = [3,2,6,9]
// 以3,2,6,9为例子
function fun (arr) {
// copy
var newArr = arr.slice(arr)
// 结果
var result = []
// 先获取3开头所有,删除3,获取2开头所有,删除2......
while(newArr.length) {
var index = 0
while(index++ < newArr.length) {
// 复制
var temp = newArr.slice()
// 数组拆分为取固定前缀(3、3-2、3-2-6)与剩余变化值[2,6,9]/[6,9]/[9]
var preArr = temp.splice(0, index)
// 拼接前缀
var pre = preArr.join('-')
temp.forEach(item => {
// 遍历拼接剩余值
result.push(pre + '-' + item)
})
}
// 删除第一个
newArr.shift()
}
return result
}
添加回答
举报