在过滤器内部使用时,Split 没有做任何事情

Split is not doing anything when used inside filter

我尝试使用此函数根据索引过滤数组,return 将拆分后的字符串放入新数组

const arr = ['arr 1','arr 2','arr 3','arr 4']
const newArr = arr.filter((val,index)=> {
  if(index <= 1) {
    return val.split(' ')
  }
})

newArr 应该 return 这个,

[['arr','1'],['arr','2']]

但是return这个,

["arr 1", "arr 2"]

这是 JS BIN 中的代码:https://jsbin.com/zoguwoyexe/edit?js,console

Split 在 map 函数中有效,但我想知道为什么它在 filter 中不起作用,有人知道吗?

filter 期望您 return true-y 或 false-y 值。它保留真值并丢弃假值。它 return 不是您 return 的值,它 return 是输入数组的一个子集。

通过使用过滤器 地图,像这样,应该得到你期望的。

const arr = ['arr 1','arr 2','arr 3','arr 4']
const newArr = arr
  .filter((val,index) => (index <= 1))
  .map((val, index) => val.split(' '));