#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. Пока нет, но в будущем могут появиться тысячи и тысячи данных.