Как назначить символ в зависимости от того, сколько раз он дублируется в массиве - PullRequest
0 голосов
/ 21 мая 2019

У меня есть массив значений, которые я хочу просмотреть и назначить числовое значение, начиная с 1 и далее.Если то же значение снова появляется в массиве, я хочу добавить первое значение, которому оно было присвоено, буквой А. Если оно появится снова, я хочу добавить его буквой B. Например:

myArray=[12,15,6,9,11,14,25,6,13,17,6] 

Ожидаемый результат должен быть >>

1
2
3
4
5
6
7
3A
8
9
3B

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы можете сделать это, используя словарь.

Сохраните переменную count, которая подсчитывает, сколько уникальных символов вы уже посетили, а затем храните словарь, в котором ключ - это фактическое число, а значение - это кортеж назначенного номера и счетчика этого ключа.

Если вы сможете показать свою собственную реализацию, вам лучше помочь.

0 голосов
/ 21 мая 2019

Примерно так должно работать, используя две карты: одну для отслеживания индекса первого вхождения элемента и одну для подсчета, сколько раз элемент появлялся ранее:

const assignChar = arr => {
  let result = new Array(arr.length)
  let firstOccurenceIndex = {}
  let occurrenceCountMap = {}
  let runningIndex = 1
  arr.forEach((element, index) => {
    if (firstOccurenceIndex[element]) {
      const c = String.fromCharCode('A'.charCodeAt(0) + occurrenceCountMap[element] - 1)
      result[index] = firstOccurenceIndex[element] + c
    } else {
      firstOccurenceIndex[element] = runningIndex++
      result[index] = firstOccurenceIndex[element]
    }
    occurrenceCountMap[element] = (occurrenceCountMap[element] || 0) + 1
  })
  return result
}

const myArr = [12, 15, 6, 9, 11, 14, 25, 6, 13, 17, 6] 

console.log(assignChar(myArr))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...