JavaScript:如何检查一个数组项是否大于另一个数组中项的两倍

时间:2020-02-09 10:59:10

标签: javascript arrays

我有两个数组

let arr1 = [1,2,3,4,5]
let arr2 = [6,7,8,9,10]

我想做的是检查arr2中的任何项目是否大于或等于arr1中的任何项目的两倍。例如,6中的arr2大于arr1中的2 * 2。

我的第一个解决方案是

for(let i = 0; i < arr2.length; i++) {
  for(let j = 0; j < arr1.length; j++) {
    if (i >= j * 2) {
      return true
    }
  }
}

预期结果:如果arr2中的任何一项大于或等于arr1中任何一项的两倍,则返回true。

但是我正在寻找这个问题的线性解决方案。

3 个答案:

答案 0 :(得分:1)

您可以取最小值array2,取双值并检查最小值let array1 = [1, 2, 3, 4, 5], array2 = [6, 7, 8, 9, 10], result = Math.min(...array2) > 2 * Math.min(...array1); console.log(result);

{{1}}

答案 1 :(得分:1)

您可以首先在第一个数组中找到绝对最小值,然后将其与第二个数组进行比较。

将其简化为O(arr1.length + arr2.length)

如果最小值的两倍大于arr2中的任何元素,则没有一个更低。

此代码似乎是错误的:

if (i >= j * 2)
{
      return true
}

应该是

if (arr2[i] >= arr1[j] * 2)
{
      return true
}

答案 2 :(得分:0)

由于需要布尔值结果,因此可以将somefind组合使用。

let arr1 = [1,2,3,4,5]
let arr2 = [6,7,8,9,10]

const num = arr2.some(num => arr1.find(x => num >= (x * 2)))

console.log(num);

相关问题