javascript - 使用过滤器时如何从两个数组返回 2 个值

标签 javascript

我有一个 Javascript 代码,它使用 forEach 循环遍历每个数组以检查它是否满足条件。然后,它调用另一个函数。笔记: 通过遍历 arr1 和 arr2 中的每个元素,我正在检查 arr1 中的任何元素是否与 arr2 中的任何元素发生冲突。 isCollision 是一个函数,如果它们相交则计算它们的距离

arr1.forEach(x => arr2.forEach(y => isCollision(x,y)? explode(x,y): undefined));

现在,我不希望它返回 undefined。所以我想知道是否有办法获取 x 和 y 值,以便我可以将其映射到另一个函数。我试过了

arr1.filter(x => arr2.filter(y => isCollision(x,y)).map(x,y => //do something)

但现在它只返回 y 的值。有没有办法让它同时返回 x 和 y?

最佳答案

试试这个:

arr1
 .map(x => ({x, y:arr2.find(y => isCollision(x,y)}))
 .filter(pair => pair.y !== undefined)

首先映射到 {x:y},然后删除未找到的项。

要转换为非未定义类型,请使用另一个映射。

arr1
 .map(x => ({x, y:arr2.find(y => isCollision(x,y)}))
 .filter(pair => pair.y !== undefined)
 .map(pair => pair as {x:Elem, y:Elem})

关于javascript - 使用过滤器时如何从两个数组返回 2 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851791/

相关文章:

JavaScript - 获取 URL 路径的一部分

Chromium 中的 JavaScript 语法错误 : missing ) after argument list

javascript - Handlebars - 获取未更改的 block 内容

javascript - 如何从js文件调用jconfirm jquery

javascript - 函数参数

asp.net - 链接页面的弹出缩略图

javascript - 每次显示页面时如何设置焦点

Javascript:迭代/循环遍历多个轴/方向?

javascript - AngularJS $http.get 发送相同的 xhr 请求两次

Javascript - 如何检查一个字符串是否包含多个子字符串