我有这个JS函数,它找到两个元素等于和值的次数。我试图修改它,以便条件不仅在两个元素等于sum时,而且当它小于和值时。
var array = [-10, -8, -1, 0, 1, 6, 10];
var sum = 16;
function findLessThanOrEqualSum(array, sum){
var count = 0;
var map = {};
for(var i = 0; i<array.length; i++){
var temp = sum - array[i]; //This right here only accounts for when two elements = sum
if(temp >= 0 && map[temp]){
console.log(sum + " " + array[i] + " " + temp);
count++;
}
map[array[i]] = true;
}
console.log(count);
}
findLessThanOrEqualSum(array, sum);
如何更改此条件var temp = sum - array[i];
,以便它为[{1}} temp
<=
实例进行说明?
我已尝试分配第二个sum - array[i];
变量,该变量将包含temp
时的所有值,但我没有成功。任何帮助将不胜感激。
答案 0 :(得分:1)
你是以一种非常复杂的方式做到的。只需使用添加两个数组元素的嵌套循环,并测试它们是否小于总和。
var array = [-10, -8, -1, 0, 1, 6, 10, 11, 8, 9];
var sum = 16;
function findLessThanOrEqualSum(array, sum) {
var count = 0;
for (var i = 0; i < array.length - 1; i++) {
for (var j = i + 1; j < array.length; j++) {
if (array[i] + array[j] < sum) {
console.log(sum + " " + array[i] + " " + array[j]);
count++;
}
}
}
console.log(count);
}
findLessThanOrEqualSum(array, sum);
你正在做的方式适用于同等条件,因为你可以在map
中查找特定的密钥。但是当你有比较条件时,没有具体的东西要找。