【问题标题】:how to write a program that prints the largest value that occurs simultaneously in both arrays?如何编写一个程序来打印两个数组中同时出现的最大值?
【发布时间】:2023-02-07 04:29:27
【问题描述】:

我必须创建两个具有从 1 到 20 的随机值的 10 元素数组,并编写一个程序来打印两个数组中同时出现的最大值。

我创建了两个选项卡,如下所示。该程序应打印两个数组中同时出现的最大值。这里应该是 11。我知道如何从数组中获取最大值。我感谢帮助。

<script>
var max = 0;
var tab = [1, 2, 5, 8, 9, 11, 15, 16, 17, 20];
var tab2 = [3, 4, 6, 7, 10, 11, 12, 13, 14, 18];
for (var i = 0; i < tab.length; i++) {
if (max <= tab[i]) {
max = tab[i];
}
}
console.log(max);
</script>

【问题讨论】:

  • 你到底在哪里卡住了?
  • 对它们进行排序,然后循环比较 a === b 并查看是否匹配。当你有一个时停下来。
  • 将其分解为两个任务,首先,如果一个元素同时存在于两个数组中,您将如何查找?那么,如果两者都存在,那么最大的是什么?困难的部分是第一个。为此,您必须将数组 A 的每个元素与数组 B 中的每个其他元素进行比较。直接的方法是使用两个嵌套循环。
  • 想一想 tab.filter(item =&gt; tab2.includes(item)) 给你带来了什么,然后从那里开始。

标签: javascript arrays loops for-loop max


【解决方案1】:

找到最大值使用嵌套循环来比较两个数组的每个元素,如下所示

var tab = [1, 2, 5, 8, 9, 11, 15, 16, 17, 20];
var tab2 = [3, 4, 6, 7, 10, 11, 12, 13, 14, 18];
var max = 0;
for (var i = 0; i < tab.length; i++) {
  for (var j = 0; j < tab2.length; j++) {
    if (tab[i] === tab2[j] && tab[i] > max) {
      max = tab[i];
    }
  }
}
console.log(max);

【讨论】:

    【解决方案2】:

    我会这样做:

    const {interesection,max} require('lodash/fp'} 
    const tab = [1, 2, 5, 8, 9, 11, 15, 16, 17, 20];
    const tab2 = [3, 4, 6, 7, 10, 11, 12, 13, 14, 18];
    const res = max(intersection(tab, tab2))
    

    您可以将其直接翻译成 javascript,尤其是当它用于家庭作业时 :)。

    【讨论】:

      猜你喜欢
      • 2022-10-24
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多