Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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_Google Apps Script_Filter - Fatal编程技术网

在第二个数组中找不到javascript筛选器元素

在第二个数组中找不到javascript筛选器元素,javascript,arrays,google-apps-script,filter,Javascript,Arrays,Google Apps Script,Filter,已解决:每个筛选器都需要显式返回语句。我认为每个过滤器中的单个布尔值足够清晰。作者@adiga 我想在一个数组(dcm)中找到第二个数组(vari)中找不到的元素。我只想匹配两个元素,vp(字符串类型)和vd(日期类型)。我已经确定dcm中有一些行符合条件,但是我没有得到任何结果 我把密码弄错了吗?是否有更好的方法来执行此操作(.includes.contains.indexOf) ps.sorrynotsorry对所有的长变量名支持者表示歉意。以及const而非var的支持者。 pps。这是谷

已解决:每个筛选器都需要显式返回语句。我认为每个过滤器中的单个布尔值足够清晰。作者@adiga

我想在一个数组(dcm)中找到第二个数组(vari)中找不到的元素。我只想匹配两个元素,vp(字符串类型)和vd(日期类型)。我已经确定dcm中有一些行符合条件,但是我没有得到任何结果

我把密码弄错了吗?是否有更好的方法来执行此操作(.includes.contains.indexOf)

ps.sorrynotsorry对所有的长变量名支持者表示歉意。以及const而非var的支持者。
pps。这是谷歌应用程序脚本,不是javascript,但我认为想法是一样的。

以防万一,因为它说@adiga如果你不使用
{/code>,你不需要
返回
语句

这很可能很好:

var dcmm = dcm.filter( r => vari.filter( rv => (rv[vp]+rv[vd] == r[dp]+r[dd]) ).length == 0 );

您没有从
过滤器
回调返回。请为这些变量添加一些数据。不清楚你在问什么每个过滤器只有一个参数,所以我认为返回是假设的。vari.filter返回这两个元素为真的所有元素。然后dcm过滤器返回vari返回的长度为0(即未找到)的所有元素。我应该在这两个布尔表达式的前面写上“return”吗?事实上,我认为是这样的。我认为如果只有一个表达式,返回是可选的。我想它不算是一个单独的表达式……可以省略arrow函数上的大括号以获得隐式返回。如果函数周围没有
{}
包装,arrow函数就具有隐式返回。请使用一些示例数据和良好的变量名称创建一个。仅仅因为您出于任何原因使用这些短变量,并不意味着您在这里发布时不能使用描述性名称。你需要让我们更容易帮助你。也许有更好的方法可以做到这一点
rv[vp]+rv[vd]==r[dp]+r[dd]
比较两个属性似乎不太好我在末尾添加了{}。我想问题是我想得太多了,而不是我想得太少了…@JasonTorpy您可能可以通过将内部过滤器更改为
every
some
dcm.filter(r=>vari.every(rv=>rv[vp]!==r[dp]&rv[vd]!==r[dd])
。筛选器将遍历vari数组中的每个项。
如果数组元素的条件失败,则每个
将停止进一步操作
var dcmm = dcm.filter( r => vari.filter( rv => (rv[vp]+rv[vd] == r[dp]+r[dd]) ).length == 0 );