array.includes() работает не так, как я ожидаю, не обнаруживая включенных элементов

#reactjs #immutable.js

#reactjs #immutable.js

Вопрос:

Я пишу это в этой функции, где массив содержит массивы из двух элементов, имени пользователя и оценки. Я хочу найти верхние N имен пользователей по их количеству, поэтому каждый раз, когда вызывается функция, я проверяю, есть ли имя пользователя, на которое я смотрю, уже в массиве.

 findLargest(array) {
    let largest = this.state.users.toIndexedSeq().get(0);
    let score = 0;
    console.log(array);
    // eslint-disable-next-line consistent-return
    this.state.users.entrySeq().forEach((element) => {
      console.log([element[1].username, element[1].score]);
      if (array.includes([element[1].username, element[1].score])) {
        console.log(element);
        console.log(array);
        return null;
      }
      if (element[1].score > largest.score) {
        // eslint-disable-next-line prefer-destructuring
        largest = element[1];
        score = element[1].score;
      }
    });
    return [largest.username, score];
  }
  

Тем не менее, я просто получаю лучший результат N раз.

Комментарии:

1. Я не могу вам помочь, если вы не предоставите примеры ввода и ожидаемого результата. Кроме того, вы смешиваете функциональное и императивное программирование. Рассмотрите возможность использования reduce вместо forEach .

2. какой тип array ? Вероятно, ошибка заключается в использовании [username, score], которое создает новый объект. сравнение этого по ссылке на что-либо всегда обречено на неудачу