我正在处理下面的代码。有没有办法获得在所有项目中都与目标数组匹配的壁橱数组?
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/