为什么即使条件语句不匹配,map()函数总是返回一些东西?_java脚本

bab*_*eir 0 javascript

看一下这个例子:

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



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


console.log(test)
Run Code Online (Sandbox Code Playgroud)

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

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

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

更新:我需要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)
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 6

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

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

console.log(test)
Run Code Online (Sandbox Code Playgroud)

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

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

console.log(test)
Run Code Online (Sandbox Code Playgroud)

如果您需要删除值转换元素,那么您可以同时使用.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)
Run Code Online (Sandbox Code Playgroud)