Javascript 记录不同数组
我试图在“console.log(partial)”下只填充一个不同的数组,例如,如果target=5,并且我有一组数字[1,1,1,1,2,2],子集将只给出这两个数组:[1,1,1,2]或[1,2,2]。但是,在我的控制台日志中,相同的2组数组被多次填充。我的代码有问题吗Javascript 记录不同数组,javascript,arrays,console.log,Javascript,Arrays,Console.log,我试图在“console.log(partial)”下只填充一个不同的数组,例如,如果target=5,并且我有一组数字[1,1,1,1,2,2],子集将只给出这两个数组:[1,1,1,2]或[1,2,2]。但是,在我的控制台日志中,相同的2组数组被多次填充。我的代码有问题吗 function subsetSum(numbers, target, partial) { var s, n, remaining; partial = partial || []; // sum par
function subsetSum(numbers, target, partial) {
var s, n, remaining;
partial = partial || [];
// sum partial
s = partial.reduce(function (a, b){
return a + b;
}, 0);
// check if the partial sum is equals to target
if (s === target) {
console.log("%s=%s", partial.join("+"), target)
console.log(partial)
for(j = 0; j < partial.length; j++){
if (partial[j] == 1){
console.log("here")
}
}
}
if (s >= target) {
return; // if we reach the number why bother to continue
}
for (var i = 0; i < numbers.length; i++) {
n = numbers[i];
remaining = numbers.slice(i + 1);
subsetSum(remaining, target, partial.concat([n]));
}
return;
}
功能子功能(数字、目标、部分){
var s,n,剩余;
部分=部分| |[];
//部分和
s=部分还原(函数(a,b){
返回a+b;
}, 0);
//检查部分和是否等于目标值
如果(s==目标){
console.log(“%s=%s”,部分.join(“+”,目标)
console.log(部分)
对于(j=0;j=目标){
return;//如果我们达到了这个数字,为什么还要继续
}
对于(变量i=0;i
您可以获得多个
[1, 1, 1, 2, 2]
因为有多个元素具有相同的值
例如,如果您对值进行编号并仅取整数值,则可以看到这种情况
要排除相同的结果,您需要在结果集中进行搜索,并避免使用相同的数字集
函数子类(数字、目标、部分=[]){
常数
总和=部分减少((a,b)=>a+parseInt(b,10),0),
结果=[];
if(sum==target)返回[部分];
如果(总和>目标)返回[];
for(设i=0;iconsole.log(…a))代码>
。作为控制台包装{最大高度:100%!重要;顶部:0;}