Javascript 如何从数据集的组合中得到数字的乘积
我有一个运行良好的组合脚本,实际上大部分都是从IBMdev网站上获得的。但我希望不仅能够显示可能的组合,而且能够提取每个组合上的数字,并得到整个数字的乘积。该项目将数字(数量)与字符串(代号)混合在一起。所以在组合它们之后,我从每个字符串中提取数字,并得到每个组合中所有数字的乘积。如图所示 [A2,B4,C5]=2*4*5=40 下面是我的javascript代码,它得到了组合,不用担心,我使用一个数字1-6的测试数组运行它,没有上面显示的字符Javascript 如何从数据集的组合中得到数字的乘积,javascript,combinations,Javascript,Combinations,我有一个运行良好的组合脚本,实际上大部分都是从IBMdev网站上获得的。但我希望不仅能够显示可能的组合,而且能够提取每个组合上的数字,并得到整个数字的乘积。该项目将数字(数量)与字符串(代号)混合在一起。所以在组合它们之后,我从每个字符串中提取数字,并得到每个组合中所有数字的乘积。如图所示 [A2,B4,C5]=2*4*5=40 下面是我的javascript代码,它得到了组合,不用担心,我使用一个数字1-6的测试数组运行它,没有上面显示的字符 var Util = function() { }
var Util = function() {
};
Util.getCombinations = function(array, size, start, initialStuff, output) {
if (initialStuff.length >= size) {
output.push(initialStuff);
} else {
var i;
for (i = start; i < array.length; ++i) {
Util.getCombinations(array, size, i + 1, initialStuff.concat(array[i]), output);
}
}
}
Util.getAllPossibleCombinations = function(array, size, output) {
Util.getCombinations(array, size, 0, [], output);
}
// Create an array that holds numbers from 1 ... 6.
var array = [];
for (var i = 1; i <= 6; ++i) {
array[i - 1] = i;
}
var output = [];
var resultArray = [];
Util.getAllPossibleCombinations(array, 4, output);
for(var j=0; j<output.length; j++) {
resultArray += output[j] + "=" + "<br />";
}
document.getElementById("test").innerHTML = resultArray;
});
var Util=function(){
};
Util.getCombinations=函数(数组、大小、开始、初始值、输出){
如果(initialStuff.length>=大小){
push(initialStuff);
}否则{
var i;
对于(i=start;i 对于(var i=1;i当我在控制台中运行该代码时,它会抛出一个错误,因为输出[j]是一个数组[1,2,3,4]
,看起来您希望它是一个字符串。数组在JS中没有替换方法
您应该运行以下命令:
var count= hoArray.length;
var ans=1;
for(var m=0; m<count; m++)
{
ans *= hoArray[m];
}
遍历数组,然后遍历字符串,然后强制转换并查看它是否为整数,然后对乘积进行计数和求和
let数组=['A20','B11','C5'];
函数getProduct(ar){
设乘积=1;
for(设x/ar){
设半积=[];
for(设i/x){
if(编号isInteger(+i)){
半积推(i);
}
}
产品*=半产品连接(“”);
}
退货产品;
}
console.log(getProduct(数组))
好的,你认为我该如何处理它,我试过了,它不断地抛出错误,这就是我为什么来发帖的原因。是的,那很好,但正如我上面所说的,真正的项目将不仅仅是数组中的数字,它将有字符串与数字连接,我必须首先将它们分离到另一个数组中将只包含我处理乘法运算符所需的数字。请查看您是否可以帮助我精确获取该数字。您的更新非常好,正在运行,但我需要[A2,B4,C5]数组的解决方案,而不是[1,2,3,4,5,6]数组。非常感谢这个解决方案,我会看看如何将它加入到我的程序中。它应该可以很好地工作。虽然我尝试将它放在包含resultArray的for循环中,但它没有很好的响应,我现在就让它工作。非常感谢。@optimalresource我还为您添加了一种更简洁的方法来生成置换。您好@Rick,我终于让它按照我想要的方式工作了。检查JSFIDLE:
var count= hoArray.length;
var ans=1;
for(var m=0; m<count; m++)
{
ans *= hoArray[m];
}
var inputval = output[j].replace(/[^,.0-9]/g, '');
inputval = inputval.slice(0, -1);
var hoArray = inputval.split(',');