在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循环?
答案 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);