Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于另一个布尔数组筛选数组_Javascript_Arrays_Lodash_Ramda.js - Fatal编程技术网

Javascript 基于另一个布尔数组筛选数组

Javascript 基于另一个布尔数组筛选数组,javascript,arrays,lodash,ramda.js,Javascript,Arrays,Lodash,Ramda.js,假设我有两个数组: const data = [1, 2, 3, 4] const predicateArray = [true, false, false, true] 我希望返回值为: [1, 4] 到目前为止,我提出了: pipe( zipWith((fst, scnd) => scnd ? fst : null)), reject(isNil) )(data, predicateArray) 是否有一种更干净/内置的方法 首选Ramda解决方案。这适用于本机JS(E

假设我有两个数组:

const data = [1, 2, 3, 4]
const predicateArray = [true, false, false, true]
我希望返回值为:

[1, 4]
到目前为止,我提出了:

pipe(
  zipWith((fst, scnd) => scnd ? fst : null)),
  reject(isNil) 
)(data, predicateArray)
是否有一种更干净/内置的方法

首选Ramda解决方案。

这适用于本机JS(ES2016):

这适用于本机JS(ES2016):


按照要求,使用
ramda.js

const data = [1, 2, 3, 4];
const predicateArray = [true, false, false, true];

R.addIndex(R.filter)(function(el, index) {
  return predicateArray[index];
}, data); //=> [2, 4]

更新了示例,以修复注释中引用的问题。

根据要求,使用
ramda.js

const data = [1, 2, 3, 4];
const predicateArray = [true, false, false, true];

R.addIndex(R.filter)(function(el, index) {
  return predicateArray[index];
}, data); //=> [2, 4]

更新了示例,以修复注释中引用的问题。

如果出于某种原因确实需要Ramda解决方案,richsilv的答案变体非常简单:

R.addIndex(R.filter)((item, idx) => predicateArray[idx], data)

出于某些原因,Ramda在其列表函数回调中不包含
索引
参数,而是插入它们。

如果出于某些原因确实需要Ramda解决方案,richsilv的答案变体非常简单:

R.addIndex(R.filter)((item, idx) => predicateArray[idx], data)

Ramda在其列表函数回调中不包含
索引
参数,这是有充分理由的,但会插入它们。

如果数据数组包含重复值,这将不起作用,因为indexOf将只返回第一个索引如果数据数组包含重复值,这将不起作用,as indexOf将只返回第一个indexNice解决方案!你能分享一些关于为什么索引没有被包括在内的原因吗?我恐怕这里讨论的太多了,但是你可以看到相关的Ramda问题:(有争议的),以及很好的解决方案!你能再分享一下为什么不包括该指数的原因吗?恐怕这里讨论的内容太多了,但你可以看到相关的拉姆达问题:(有争议的),和