Javascript 如何列出2个数组中所有可能的和?

Javascript 如何列出2个数组中所有可能的和?,javascript,ruby,algorithm,Javascript,Ruby,Algorithm,例如,假设我有数组 a=[1,2,3,4,5,6]和b=a 我期望的结果是: 1+1、1+2、1+3。。。3 + 1, 3 + 2, 3 + 4 ... 6+3,6+4,6+5,6+6 我更愿意用JS或Ruby进行这个简单的计算,但我不介意用任何其他语言来回答。有人能给我指点方向吗?尝试在两个数组中循环,将第一个数组添加到第二个数组中,并将结果存储在第三个数组中,例如 var one = [1, 2, 3]; var two = [4, 5, 6]; var three = []; for(

例如,假设我有数组
a=[1,2,3,4,5,6]
b=a
我期望的结果是:

1+1、1+2、1+3。。。3 + 1, 3 + 2, 3 + 4 ... 6+3,6+4,6+5,6+6


我更愿意用JS或Ruby进行这个简单的计算,但我不介意用任何其他语言来回答。有人能给我指点方向吗?

尝试在两个数组中循环,将第一个数组添加到第二个数组中,并将结果存储在第三个数组中,例如

var one = [1, 2, 3];
var two = [4, 5, 6];

var three = [];

for(var x = 0; x < one.length; ×++){
  for(var y = 0; y < two.length; y++){
    three.push(one[x] + two[y]);
  }
}
varone=[1,2,3];
var-two=[4,5,6];
var三=[];
对于(变量x=0;x<1.length;×++){
对于(变量y=0;y<2.length;y++){
三.推动(一[x]+二[y]);
}
}
这将导致三[0]=1+4、三[1]=1+5、三[2]=1+6、三[3]=2+4、三[4]=2+5等。您可以使用这些数组进行迭代

forEach()
方法对每个数组元素执行一次提供的函数

结果是不可重复的

函数xSums(数组){
var r=[],
o={};
array.forEach(函数(a){
array.forEach(函数(b){
如果(!o[a+b]){
r、 推(b+a);
o[a+b]=真;
}
});
});
返回r;
}
document.write(''+JSON.stringify(xSums([1,2,3,4,5]),0,4)+'';
document.write(''+JSON.stringify(xSums([3,7,42]),0,4)+''
步骤如下:

在Ruby中:

a.product(b).map{| p | p.reduce(:+)}.uniq

我会这样做:


在javascript中,使用

var a=[1,2,3,4,5,6];
var r=新集合();
a、 forEach(x=>a.forEach(y=>r.add(x+y)))

写入(“”+Array.from(r)+“”)您是否尝试自己解决此问题?如果是这样的话,你能把你已经尝试过的代码添加到你的问题中吗?你尝试做的就是所谓的排列。这里可以找到一个很好的深入的答案:@dYale,因为OP需要所有可能的和,所以组合就足够了,甚至那些组合也可能有重复的和
应该是JavaScript,这是错误的。比我快42秒:-D
a = [1, 2, 3, 4, 5, 6]
b = [1, 4, -1, 7, 9]

a.product(b).map { |a,b| a+b }.uniq
  #=> [2, 5, 0, 8, 10, 3, 6, 1, 9, 11, 4, 7, 12, 13, 14, 15] 
c = a.product(b)
  #=> [[1, 1], [1, 4], [1, -1], [1, 7], [1, 9],
  #    [2, 1], [2, 4], [2, -1], [2, 7], [2, 9],
  #    [3, 1], [3, 4], [3, -1], [3, 7], [3, 9],
  #    [4, 1], [4, 4], [4, -1], [4, 7], [4, 9],
  #    [5, 1], [5, 4], [5, -1], [5, 7], [5, 9],
  #    [6, 1], [6, 4], [6, -1], [6, 7], [6, 9]] 
d = c.map { |a,b| a+b }
  #=> [2, 5, 0, 8, 10,
  #    3, 6, 1, 9, 11,
  #    4, 7, 2, 10, 12,
  #    5, 8, 3, 11, 13,
  #    6, 9, 4, 12, 14,
  #    7, 10, 5, 13, 15] 
d.uniq
  #=> [2, 5, 0, 8, 10, 3, 6, 1, 9, 11, 4, 7, 12, 13, 14, 15] 
a = [1, 2, 3, 4, 5, 6]
a.permutation(2).map { |x, y| x + y }