我想知道如何借助javascript中的函数以替代顺序打印数组的元素?
array = [6,20,99,10,60,31,05,08];
结果= [6,99,60,05]
答案 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);