【问题标题】:Know the last number equal to another within an array in Javascript知道Javascript中数组中的最后一个数字等于另一个数字
【发布时间】:2021-04-09 20:51:12
【问题描述】:
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 的数组,它存储先前由另一个名为numbersArray 的数组的for 循环遍历的数字。然后使用forEach,我得到的先前数字的数量等于number

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

【问题讨论】:

  • 请添加所需的输出。

标签: javascript arrays for-loop


【解决方案1】:

用 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);
}

【讨论】:

  • 问题是 for 循环对于我的其余代码是必需的。
  • 你可以用 for 循环轻松替换 numbersArray.forEach
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
相关资源
最近更新 更多