使用JavaScript中的地图跳过数组中的元素

时间:2018-11-06 18:37:58

标签: javascript arrays

在javascript中使用map方法时是否可以跳过值?

例如

<!DOCTYPE html>
<html>
<body>


<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
var numbers = [4, 9, 16, 25];

function myFunction() {
    x = document.getElementById("demo")
    x.innerHTML = numbers.map(Math.sqrt);
}
</script>

</body>
</html>

此代码将输出2,3,4,5

但是您可以使它输出2,4吗,所以它检查数组中的第一个值,然后跳过第二个值直到结尾

3,5,因此它将跳过数组中的第一个值,然后检查第二个值。

使用map方法可以吗?还是必须使用for循环?

2 个答案:

答案 0 :(得分:2)

您可以在映射数组上使用.filter()

let numbers = [4, 9, 16, 25];

let output1 = numbers.map(Math.sqrt).filter((_, i) => (i % 2 == 0));
let output2 = numbers.map(Math.sqrt).filter((_, i) => (i % 2 != 0));

console.log(output1);
console.log(output2);

答案 1 :(得分:0)

无法使用函数map,因为此函数将创建一个与源数组长度相同的新数组。

一种替代方法是使用函数reduce

var numbers = [4, 9, 16, 25];
var result = numbers.reduce((a, n, i) => {
  if (n % 2 === 0) a.push(Math.sqrt(n));
  return a;
}, []);

console.log(result);