Tob*_*eek 4 javascript language-agnostic arrays algorithm
我有一个可能看起来像这样的数组......
var 数组 = 数组(1,4,7,8,12,15);
数组中的值将始终是整数,并且总是会增加,或者可以与之前相同,但至少不会变少。
现在我想循环遍历数组并找出哪个“步骤”之间有最大的差异,所以在我的示例中,这将是数组键 4&5,因为从 8-12 == 4...但也可能发生这种情况这将是具有相同值的多个步骤,假设我的数组是这样的..
var 数组 = 数组(1,5,7,8,12,15);
那么就会是 0&1 和 4&5....
我正在寻找一个可以返回我这个的函数...哦,它必须是 PureJs...
我希望有一个人可以帮助我。
我不确定你到底想要什么。但如果你想要最大的跳跃:
var max=0;
for (i=1; i<array.length; i++)
max = Math.max(max,array[i]-array[i-1]);
Run Code Online (Sandbox Code Playgroud)
如果您想要发生最大跳跃的第一个位置:
var max=0;
var firstLoc=0;
for (i=1; i<array.length; i++)
{
curJump = array[i]-array[i-1];
if (curJump > max)
{
firstLoc = i;
max = curJump;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要发生此跳转的最后位置:
var max=0;
var lastLoc=0;
for (i=1; i<array.length; i++)
{
curJump = array[i]-array[i-1];
if (curJump >= max)
{
lastLoc = i;
max = curJump;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要一个包含发生最大跳跃的所有位置的数组:
var max=0;
var locs = [];
for (i=1; i<array.length; i++)
{
curJump = array[i]-array[i-1];
if (curJump == max)
{
locs.push(i);
} else if (curJump > max)
{
locs = [i];
max = curJump;
}
}
Run Code Online (Sandbox Code Playgroud)