1

I have been working on an example that detects repetitions by letter-number with the following JavaScript code.

But it's not working. The idea is that it detects that the combination A-1 is repeated; using a control matrix.

This is the items JSON structure:

{
letter: 'A',
number: '1',
},
{
letter: 'B',
number: '2',
},
{
letter: 'A',
number: '1',
},
{
letter: 'C',
number: '2',
},

And this is the code I am trying to:

var isRepeated = false;
var numItems = items.length;
if (numItems > 0) {
    var item; 
    var letter;
    var number;
    var matrix = [[]];
    for (var j = 0; j < numItems; j++) {
        item = items[j];
        letter = item.letter;
        number = item.number;
        if (matrix[letter][number] == undefined) {
            matrix[letter][number] = true;
        } else {
            isRepeated = true;
            break;
        }
    }
}

1 Answer 1

2
matrix[letter][number]

You're trying to access elements of an array using string keys but arrays use integer indexes

Here's an alternative if you just want to know if something is repeated

const props = [{
    letter: 'A',
    number: '1',
  },
  {
    letter: 'B',
    number: '2',
  },
  {
    letter: 'A',
    number: '1',
  },
  {
    letter: 'C',
    number: '2',
  },
]

const didRepeat = (array) => array.some(((hash) => ({letter, number}) => {
  const key = `${letter}_${number}`;

  if (hash.has(key)) return true;
  return hash.add(key), false;
})(new Set()))

console.log(didRepeat(props))

Sign up to request clarification or add additional context in comments.

1 Comment

Great code handling!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.