Сравните каждый элемент со следующим и найдите каждый большой или маленький элемент путем сравнения. И переместите результат в новый массив для каждого

#javascript #arrays #reactjs #react-hooks #compare

Вопрос:

У меня есть массив, подобный приведенному ниже. Как я могу найти, что каждое значение в массиве мало или велико по сравнению с его следующим значением. И я хочу поместить результат в новый массив, подобный этому же массиву. И если элементы одинаковы, то это будет пусто.

 const array = [
[7, 10, 10, 10, 9, 13, 9, 9, 11, 12, 7, 8, 8, 8, 8],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 5, 6, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 6],
[7, 7, 7, 8, 8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7],
[0, 63, 58, 65, 55, 68, 65, 65, 43, 58, 57, 55, 55, 70, 55],
[29, 26, 28, 27, 29, 29, 30, 33, 32, 33, 28, 28, 31, 31, 29],
[3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
];
 

Это мой код, но он не работает.

 const items = [];
  function getOutRank() {
array.map((singleKey, index) => {
  console.log("SINGLE KEY", singleKey);
  for (let i = 0; i < singleKey.length; i  ) {
    if (singleKey[i   1] > singleKey[i]) {
      return items.push(<span key={index}>Down</span>);
    }
    if (singleKey[i   1] === singleKey[i]) {
      return items.push(<span key={index} />);
    }
    return items.push(<li key={index}>Up</li>);
  }
});}

getOutRank();
 

Ответ №1:

Для каждого singleKey из них должен быть возвращен массив всех результатов сравнения. Попробуй вот так:

 const array = [
  [7, 10, 10, 10, 9, 13, 9, 9, 11, 12, 7, 8, 8, 8, 8],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [6, 5, 6, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 6],
  [7, 7, 7, 8, 8, 8, 7, 7, 7, 5, 7, 7, 7, 7, 7],
  [0, 63, 58, 65, 55, 68, 65, 65, 43, 58, 57, 55, 55, 70, 55],
  [29, 26, 28, 27, 29, 29, 30, 33, 32, 33, 28, 28, 31, 31, 29],
  [3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]
];

let items = [];

function getOutRank() {
  items = array.map((singleKey, index) => {
    var compare = [];
    
    for (let i = 0; i < singleKey.length - 1; i  ) {
      if (singleKey[i   1] > singleKey[i]) {
        compare.push(`<span key=${index}>Down</span>`);
      } else if (singleKey[i   1] === singleKey[i]) {
        compare.push(`<span key=${index}>Equal</span>`);
      } else {
        compare.push(`<li key=${index}>Up</li>`);
      }
    }
    
    return compare;
  });
}

getOutRank();
console.log(items); 

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

1. Есть ли какой-либо другой способ сделать это, который может быть более эффективным?

2. У вас проблемы с эффективностью?

3. Пока нет, но в будущем могут появиться тысячи и тысячи данных.