javascript - 如何找到最接近目标数组的数字数组?

标签 javascript jquery

我正在处理下面的代码。有没有办法获得在所有项目中都与目标数组匹配的壁橱数组?

var counts = [
              [4,9,15],
              [2,11,81],
              [20,12,80],
              [14,3,80],
              [15,6,2],
              ]
  goal = [14,10,70];

var closest = counts.reduce(function(prev, curr) {
  return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
});

console.log(closest);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

最佳答案

你可以用 n 维空间中的距离(在本例中为 3)来看它

var counts = [
              [4,9,15],
              [2,11,81],
              [20,12,80],
              [14,3,80],
              [15,6,2],
              ]
  goal = [14,10,70];

var best = Infinity;
var closest = null;
for(var i in counts) {
  var sum = 0;
  for(var j in counts[i]) {
    sum += (goal[j] - counts[i][j])**2;
  }
  if ((sum**.5) < best) {
    closest = counts[i];
    best = sum**.5;
  }
}

console.log(closest);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

关于javascript - 如何找到最接近目标数组的数字数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977545/

相关文章:

javascript - 从选择下拉angularjs中删除空项目

javascript - 如何隐藏动态创建的div

javascript - 如何覆盖 jQuery promise 回调

javascript - 检查光标是否悬停在顶部 X 个像素上?

jquery - 如何在将元素添加到 DOM 之前获取该元素?

javascript - Cycle2 未运行

javascript - jQuery 表单验证——正确提交而不是清除错误

javascript - 如何从 TypeScript 访问并实例化 javascript 类?

javascript - 如果跨度文本不为 0,则发出警报

jQuery - 延迟向数组内的元素添加类