我正在寻找一种更好的解决方案,以获取数组中2个元素之间的最小距离。
输入:arr [] = {3,5,4,2,6,5,5,6,6,5,4,8,3},x = 3,y = 6
输出:3和6之间的最小距离是4。

我在JS中有此代码,目前可以正常使用。
我正在寻找更好的代码来实现相同的目的。
谢谢!!

<script>
var numbers= ["2", "3", "5","7","1","2","3","4","8"];
var x ="5";
var y ="8";
var firstIndex = numbers.indexOf(x);

var minD = numbers.length;

var x= numbers.forEach(function(item,index){

if((item == x) || (item == y))
{
    if((index != firstIndex) && (index-firstIndex < minD))
    {
    minD = index-firstIndex;
    firstIndex = index;
    }
    else
    {
    firstIndex = index;
    }
 }

});
alert(minD);

document.getElementById("demo").innerHTML = minD;
</script>

最佳答案

var xs=array.reduce((arr,el,i)=>(!(el===x)||arr.push(i),arr),[]);
var ys=array.reduce((arr,el,i)=>(!(el===y)||arr.push(i),arr),[]);
var lowest= xs.map(ix=>ys.map(iy=>Math.abs(iy-ix)).sort()[0]).sort()[0];


我不确定这是真的要缩短还是更好,这只是另一种方法。

我已经简单地滤除了所有x和y位置,然后计算了它们之间的距离(iy-ix)并取了smalles值(.sort()[0])

http://jsbin.com/nolohezape/edit?console

关于javascript - 使用Javascript数组中两个数字之间的最小距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44031127/

10-13 07:05