-1

我试图让你的帮助来找到这个逻辑,我如何计算到数组中目标的距离

假设我有一个数组

let arr = ["a", "b", "c", "d", "x" , "z" ]

我想找到“b”到“x”的距离?如果那个数组也有空字符串呢?

like ["a", "b", "c", " ", "d", "x" , "z" ]
4

2 回答 2

3

let input = ["a", "b", "c", " ", "d", "x" , "z" ]

function findDistance(source, target){
 return Math.abs(input.indexOf(target) - input.indexOf(source))
}

console.log(findDistance('b','x'))

于 2018-11-06T08:25:46.747 回答
1

通过将数组用作无穷大数组的差异方法。

function findDistance(array, a, b){
    var delta = array.indexOf(a) - array.indexOf(b);
    return Math.min(
        Math.abs(delta),
        Math.abs(delta + array.length),
        Math.abs(delta - array.length)
    );
}

let input = ["a", "b", "c", " ", "d", "x" , "z"]; 
    //             ^                   ^                        
    //             1                   5          |1 - 5|     ->   4 
    //             1                   5          |1 - 5 + 7| ->   3 <==
    //             1                   5          |1 - 5 - 7| -> -11

console.log(findDistance(input, 'b', 'x'));
console.log(findDistance(input, 'x', 'b'));

于 2018-11-06T08:47:01.510 回答