首页 > 解决方案 > 为什么即使条件语句不匹配,map() 函数也总是返回一些东西?_ java 脚本

问题描述

看看这个例子:

let my_array = [1,2,4,5,6,7,8]



test = my_array.map(element=>{
    if(element!==1){
        return element
    }
})


console.log(test)

如果语句不匹配,为什么 map() 函数总是返回一些东西?

我知道 map 函数迭代数组的索引。但为什么返回null?我们说只有当陈述为真时才返回。

我们如何避免 null 返回 map()?

更新:我需要 map() 和 filter() 的组合:

let my_array = [1, 2, 4, 5, 6, 7, 8]
test = my_array
  .filter(element => element !== 1)
  .map(element => element * 2);

console.log(test)

标签: javascript

解决方案


.map将始终创建一个具有与原始数组相同数量的项目的数组。这就是它的工作原理。如果您不想生成具有相同数量元素的数组,请.filter改用:

let my_array = [1, 2, 4, 5, 6, 7, 8]
test = my_array.filter(element => element !== 1);

console.log(test)

.map仅适用于将数组的每个元素转换为另一个值,例如:

let my_array = [1, 2, 4, 5, 6, 7, 8]
test = my_array.map(element => element * 2);

console.log(test)

如果您既需要删除值需要转换元素,则可以同时使用.filterand .map

let my_array = [1, 2, 4, 5, 6, 7, 8]
test = my_array
  .filter(element => element !== 1)
  .map(element => element * 2);

console.log(test)


推荐阅读