如何在数组中来回迭代?

use*_*749 0 javascript arrays math

我有一个数组和方向变量,例如:

var fruits = ["apple","banana","cherry"];
var direction = 1; 
//1 => forward; -1 => backwards;
Run Code Online (Sandbox Code Playgroud)

然后叫它我可能会说

index = **SOME MATHS HERE** 
var fruit = fruits[index]
Run Code Online (Sandbox Code Playgroud)

所以目标是有一个可以在数组中前后移动的循环。我想要一个循环遍历数组。我知道我可以使用 if 循环来做这 if(direction < 0){//backwards}件事,但是当我可以使用聪明的数学运算来迭代它时,这将意味着两批代码。

p.s*_*w.g 5

像这样的事情会起作用:

var fruits = ["apple","banana","cherry"];
var direction = 1;  // or -1

var i = direction > 0 ? 0 : fruits.length - 1,
    stop = direction > 0 ? fruits.length : -1;
for (; i != stop; i += direction)
    console.log(i, fruits[i]);
Run Code Online (Sandbox Code Playgroud)

var fruits = ["apple","banana","cherry"];
var direction = 1;  // or -1

var i = direction > 0 ? 0 : fruits.length - 1,
    stop = direction > 0 ? fruits.length : -1;
for (; i != stop; i += direction)
    console.log(i, fruits[i]);
Run Code Online (Sandbox Code Playgroud)
var fruits = ["apple", "banana", "cherry"];

function iterate(direction) {
  var results = $("#results").empty();
  var i = direction > 0 ? 0 : fruits.length - 1,
    stop = direction > 0 ? fruits.length : -1;
  for (; i != stop; i += direction)
    $("<span>").text(i + ": " + fruits[i] + "\n").appendTo(results);
}
Run Code Online (Sandbox Code Playgroud)