计算数组中两个元素小于或等于总和值的次数 - Javascript

时间:2016-10-27 20:50:46

标签: javascript arrays

我有这个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时的所有值,但我没有成功。任何帮助将不胜感激。

1 个答案:

答案 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中查找特定的密钥。但是当你有比较条件时,没有具体的东西要找。