首页 > 解决方案 > 知道Javascript中数组中的最后一个数字等于另一个数字

问题描述

const numbersArray = [5, 3, 1, 3, 4, 5, 3, 1];

var pastNumbers = [];

for (let i = 0; i < numbersArray.length; i++) {
  const number = numbersArray[i];
  pastNumbers.push(number);
  var count = 0;
  pastNumbers.forEach((v) => (v === number && count++));
  console.log(`There are ${count} numbers before equal to ${number}. The last equal number is in the ${???} position.`);
}

我有一个名为的数组pastNumbers,它存储先前由for另一个名为numbersArray. 然后forEach我得到先前数字的数量等于number

我想知道最后一个数字numberpastNumbers数组中的位置。我该怎么做?

标签: javascriptarraysfor-loop

解决方案


用 for 循环更新

使用对象而不是数组来跟踪,这样会更容易一些。

在此示例中,我将遍历每个数字并将开头 ( unshift) 的位置添加到 pastNumber[number]。

我正在使用 unshift ,以便第一项是注册的最后一个位置。这样我就可以查找[0]而不是使用[$.length-1](但我仍然使用长度,所以你push也很好 ‍♂️)

const numbersArray = [5, 3, 1, 3, 4, 5, 3, 1];
const pastNumbers = {};

for (let i = 0; i < numbersArray.length; i++) {
  const number = numbersArray[i];
  if (!pastNumbers[number]) {
    pastNumbers[number] = [];
  }
  if (pastNumbers[number].length > 0) {
    console.log(
      `There are ${pastNumbers[number].length} numbers before equal to ${number}. The last equal number is in the ${pastNumbers[number][0]} position.`
    );
  }
  pastNumbers[number].unshift(i);
}


推荐阅读