#javascript #html #arrays
Вопрос:
Как отобразить массив, отображая его по строкам?
var data = [28, 27, 26, 25, 24, 23]
Это мой код для перестановки массива
const positionRearrange = (data) => {
const
result = [],
swap = { unshift: 'push', push: 'unshift' }
data
.sort((a, b) => a - b)
.forEach((fn => v => result[fn = swap[fn]](v))('unshift'))
return result
}
Комментарии:
1. МИЛО, что ты предпринял?
2. @OmriAttiya по — прежнему находит решение, но уже завершает сортировку, просто сопоставление данных в строки-это проблема const positionRearrange = (данные) => { const результат = [], подкачка = { unshift: ‘push’, push: ‘unshift’ } данные .сортировка((a, b) =>> a-b) .Для каждого((fn =>>> v =>>>> результат[fn = подкачка[fn]](v))(‘unshift’) возвращаемый результат }
3. Добавьте свой код к вопросу, чтобы мы все могли видеть, что
4. Я не понимаю вашего заказа? 27, 28, 26 ?
5. @SteveTomlin вы можете использовать функцию, которую я включил
Ответ №1:
Создал функцию , которая выполняет циклы для 3 значений подряд, а затем создает несколько массивов для каждого из них ( массив, заполненный 3 значениями), наконец, переставляет элементы массива по мере необходимости . Для выбора только первых трех значений ( или создания диапазонов) мы используем array.slice(start, end)
Решение =>
let data = [28, 27, 26, 25, 24, 23]
function slicing () {
let arr_data = [];
for (let i = 0; i < data.length; i = i 3) {
let arr = data.slice(i, i 3).sort()
let v1 = arr[0];
let v2 = arr[1];
let v3 = arr[2];
arr = [v1,
v3,
v2]
arr_data.push(arr)
}
console.log(arr_data)
}
slicing()
Комментарии:
1. @Анжелика, это то, чего ты хотела ?
2. да, сэр, вот так, теперь моя единственная проблема-сделать эту динамику динамичной
3. @Анжелика, что ты имеешь в виду под «динамичным»? Какую сортировку вы хотите применить?
4. @Анжелика ура, я тоже не могу понять по динамике ?
Ответ №2:
Если вы хотите разделить свои данные на куски (отсортированных) n-элементов, вы можете запустить один из приведенных ниже фрагментов:
Современный способ — использование array.slice()
const data = [28, 27, 26, 25, 24, 23];
const rowSize = 3;
const chunks = Array();
for (let i = 0; i < data.length; i = rowSize) {
const row = data.slice(i, i rowSize).sort();
chunks.push(row);
}
console.log(chunks);
Старый школьный путь
В большинстве случаев производительность не является проблемой, но этот способ, показанный ниже, немного быстрее. И в зависимости от того, что вы пытаетесь сделать, это может быть жизненно важной альтернативой.
const data = [28, 27, 26, 25, 24, 23];
const rowSize = 3; // How many elements fit into one row
const numberOfRows = Math.floor(data.length / rowSize);
const chunks = Array(numberOfRows); // Allocate memory for n-rows
// Create a 2D-array for each row we allocate memory for n-items => rowSize
for (let i = 0; i < numberOfRows; i ) {
chunks[i] = Array(rowSize);
}
// Loop over the elements in data and compute the corresponding row and column index
for (i in data) {
const rowIndex = Math.floor(i / rowSize);
const colIndex = i - rowIndex * rowSize;
chunks[rowIndex][colIndex] = data[i];
}
// If you want to sort your rows
for (i in chunks) {
chunks[i].sort();
}
console.log(chunks);