【问题标题】:Can I determine the index where two arrays cross?我可以确定两个数组交叉的索引吗?
【发布时间】:2017-06-23 20:10:12
【问题描述】:

我有两个代表 Y 值的值数组。我正在尝试确定 line1 和 line2 在设置期间是否相互交叉/下方,如果可能,返回它们所做的数组中的索引。我找到了可以告诉我特定行的代码,但想看看是否有更好的方法来做到这一点?

数据集如下。 line1[0] 将是该系列中最新的数字。下面我想测试一下line2是否越过line1,这将返回索引1。

line1 = [25, 30, 25, 20, 15, 10]
line2 = [ 60, 40, 20, 17, 11, 5]

【问题讨论】:

标签: javascript


【解决方案1】:
var line1 = [25, 30, 25, 20, 15, 10];
var line2 = [ 60, 40, 20, 17, 11, 5];
var start=line1[0]<line2[0];
var crossingpoint=line1.findIndex((el,i)=>start!==(el<line2[i]));

只需检查 linepoint0 是否更大 linepoint1 更改。在您的情况下,它将返回 2,因为它在 1 和 2 之间交叉。您可以减去 1 以获得所需的输出...

try it

【讨论】:

  • 如果您不将相等的值(即数组“接触”的位置)视为“交叉”,这是正确的,这可能是也可能不是所需的结果。如果您确实想将相等的值视为“交叉”,则添加一个相等测试,即在最后一行的start 之前添加el===line2[i]||
猜你喜欢
  • 2015-08-14
  • 2012-07-14
  • 1970-01-01
  • 2014-01-13
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多