根据另一个布尔数组过滤一个数组

jgr*_*gr0 0 javascript arrays lodash ramda.js

说我有两个数组:

const data = [1, 2, 3, 4]
const predicateArray = [true, false, false, true]
Run Code Online (Sandbox Code Playgroud)

我希望返回值为:

[1, 4]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我想出了:

pipe(
  zipWith((fst, scnd) => scnd ? fst : null)),
  reject(isNil) 
)(data, predicateArray)
Run Code Online (Sandbox Code Playgroud)

有没有更清洁的/内置的方法来做到这一点?

最好使用Ramda中的解决方案。

ric*_*ilv 6

这在本机JS(ES2016)中有效:

const results = data.filter((d, ind) => predicateArray[ind])
Run Code Online (Sandbox Code Playgroud)