我试图检查数组中的数字是否可以添加到数组中的特定数字(在这种情况下数组最大的数字是目标)。我的思考过程是创建一个包含所有可能组合的数组,然后遍历它以查看是否有最大数目。将值从for循环(在另一个for循环内)推到一个数组中JavaScript
为了得到所有组合的数组(addArray函数),我创建了一个数组results = [0],并且试图遍历被测数组中的每个值,例如array1,并将每个值添加到结果并将这些结果推向结果。因此,以array1为例:
results = [0] and array1 [0] = 5;结果= 0,5;
results = [0,5] and array1 [1] = 7; 0 + 7和5 + 7被推到结果,所以结果= [0,5,7,12];
等
为了实现这一点,我创建了一个用于循环通过阵列进行迭代被测试,然后内的for循环我创建另一个用于环路直通的结果阵列进行迭代,然后推动的总和数组中的项目将与结果中的所有项目一起进行测试,以便当循环移动到原始数组的下一个项目中,当它进入第二个for循环时,结果数组包含前面项目的总和,如上面的例子。
但是,我似乎无法得到它的工作,但如果我在结果中放入一些值,我可以看到每个项目都在迭代结果中的每个值。我的问题似乎是将项目推送到原始数组中的下一个项目的结果。我的感觉是,你不能将项目推送到你正在迭代的数组?任何帮助将不胜感激。
感谢
var array1 = [5, 7, 16, 1, 2];
var array2 = [3, 5, -1, 8, 16];
var array3 = [4, 6, 23, 10, 1, 3];
var arraySort = function(arr) {
arr = arr.sort(function(a, b) {
return a - b;
});
return arr;
};
var addArray = function(arr) {
arr = arraySort(arr);
var largest = arr[arr.length - 1];
var results = [0];
//Here's where I am stuck.
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < results.length; j++) {
results.push(arr[i] + results[j]);
}
}
};
addArray(array1);
使用一个空的临时结果数组并在迭代后将其分配给结果。 –
用你写的'for'循环(长度测试在中间字段中),当你迭代时,你可以推入相同的数组。你的问题很可能只是使用错误的算法。 – Alnitak