首页 > 解决方案 > 使用“排序”方法后如何计算元素的前一个索引?

问题描述

我正在编写一个简单的银行模拟应用程序。

我的问题是我需要找出元素的先前索引。我有一张地图:

const movsDesc = new Map([[6, 'Bank']]);

这是原始数组:

const movements: [200, -200, 340, -300, -20, 50, 400, -460];

这是我正在使用的比较功能:

const movsSorted = movements.slice().sort((a, b) => a - b);

然后我forEach在数组上使用,并在每次迭代中为事务创建一个 DOM 元素。它看起来像这样:

movs.forEach(function(mov, i) {
    const type = mov[0] > 0 ? 'deposit' : 'withdrawal';
    const description = currentAccount.movsDesc.get(i) || 'Unknown';
    const html = `
    <div class="movements__row">
      <div class="movements__type movements__type--${type}">${i + 1} ${type}</div>
      <div class='movements__sender'>${type === 'deposit' ? 'from' : 'to'}: ${description}</div>
      <div class="movements__value">${mov[0]}€&lt;/div>
    </div>
  `;

  containerMovements.insertAdjacentHTML('afterbegin', html);
});

当数组具有其原始顺序时,它可以正常工作,因此没有任何更改。映射中的每个键都指向数组中的指定索引。当然,当数组被排序时,元素会改变它们的位置,因此它们会得到错误的描述。这就是为什么我需要跟踪每个元素的位置,可以这么说。

感谢你的帮助!

标签: javascriptalgorithmsorting

解决方案


推荐阅读