在两个数组中仅比较键值一次

时间:2019-03-17 16:20:10

标签: javascript

如何比较数组中的值:

['1', '2', '3', '4']
['2', '1', '4', '1']

就像:

if (1 > 2) return counter++

第一与第一,第二与第二,第三与第三。如果我做循环,我会做很多次:

for (let i = 0; i < arr1.length; i++) {
        for (let j = 0; j < arr2.length; j++) {
            if (Number(arr1[i]) > Number(arr2[j])) {
                counter++;
            }
        }
    }

我只想比较一次,每个键值和每个键值。因此,在此示例中,计数器应为2

4 个答案:

答案 0 :(得分:1)

您可以使用Array.reduce将第一个数组的元素与第二个数组进行比较。

  1. 使用0作为累加器/计数器的初始值。
  2. 检查第一个数组的元素是否作为第二个数组传入 reduce回调的参数大于对应的 第二个数组的元素。
  3. 如果以上均为正确,则累加累加器。

const arr1 = ['1', '2', '3', '4'];
const arr2 = ['2', '1', '4', '1'];

const count = arr1.reduce((accumulator, element, idx) => {
  return +arr2[idx] > +element? accumulator + 1 : accumulator;
}, 0);
console.log(count);

答案 1 :(得分:0)

只需将1用于如下所示的循环。由于数组具有相同的长度,因此您可以只使用第一个循环的索引。

'tor' is not recognized as an internal or external command,
operable program or batch file.

答案 2 :(得分:0)

您需要一个循环并比较相同索引处的值。

<div id="heading-group-1" class="heading-group">
  <h2>Heading for group 1</h2>
</div>

<div id="heading-group-2" class="heading-group">
  <h2>Heading for group 2</h2>
</div>

答案 3 :(得分:0)

您不需要嵌套循环。您可以只使用单循环来做到这一点。
但是更干净的方法是使用Array.prototype.filter()并获取其length

let arr1 = ['1', '2', '3', '4']
let arr2 = ['2', '1', '4', '1']

let count = arr1.filter((a,i) => +a > +arr2[i]).length;
console.log(count)