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 }