如何借助javascript中的功能以替代顺序打印数组的元素?

时间:2019-02-22 05:28:40

标签: javascript

我想知道如何借助javascript中的函数以替代顺序打印数组的元素?

array = [6,20,99,10,60,31,05,08];

结果= [6,99,60,05]

3 个答案:

答案 0 :(得分:3)

您可以在JavaScript中使用.filter-high-order function。通过使用filter,您可以通过它们的索引过滤元素。如果索引i模2为零(即!(i % 2)),则可以保留该元素,然后返回true:

const arr = [6,20,99,10,60,31,05,08],
res = arr.filter((_, i) => !(i % 2));

console.log(res);

答案 1 :(得分:1)

我们要遍历数组并使用适当的时间复杂度。为了避免循环不止一次,让我们让函数一次完成一次。因此,我们将使用数组帮助器。我们也只希望它每隔一个索引做一次。因此,我们将其乘以2,如果为0,则将其发送给函数。为了使它具有与其他常见数组函数相同的占用空间,我们将使其从forEach接收的参数传递给传递的函数。

function everyOther (array, fn) {
  array.forEach(function (value, index, array) {
    if (!(index % 2)) fn(value, index, array);
  })
}

现在我们就称呼它并做我们想做的事!

everyOther([1,2,3], function (value) { console.log(value) }); // prints 1, 3

我们甚至可以将其包装在一个封闭的容器中,从而仅将它们严格地彼此印刷。

function printEveryOther (array) {
  everyOther(array, function (value) { console.log(value) });
}

printEveryOther([1,2,3]) // 1, 3

现在,您拥有了一个适应性强的功能,具有熟悉的足迹,甚至可以做其他事情!

在此示例中使用的东西:

现在好了一些香料,这要感谢最近对JavaScript的一些补充:

const everyOther = (a, f) => a.forEach((v, i) => !(i%2) && f(v,i,a));
const mapEveryOther = (a, f) => {
  const r = [];
  everyOther(a, (v, i) => r.push(f(v,i,a)));
  return r;
}

现在我们完全制作了另一个函数,而是返回一个数组

const doubleEveryOther = a => mapEveryOther(a, a => a + a);

doubleEveryOther([1,2,3]) // [2,6]

使用的概念:

还有更多的乐趣。学习愉快!

答案 2 :(得分:0)

用于循环并将i加2

let array = [2, 20, 5, 66, 5, 98, 4, 6];

function alternate(array) {
  for (i = 0; i < array.length; i += 2) {
    console.log((i + 1) + ": " + array[i]);
  }
}
alternate(array);