javascript - কলামগুলিতে উল্লম্বভাবে একটি অ্যারে ম্যাপ করবেন কীভাবে?




(2)

আমার যদি আইটেমগুলির অ্যারে থাকে, যেমন,

const array = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ]

আমি কীভাবে এটি মানচিত্র করতে পারি, যাতে স্ক্রিন / পৃষ্ঠাটি রেন্ডার করে,

1     6     11    16
2     7     12    17
3     8     13    18
4     9     14
5     10    15

আমি এটির সাথে আনুভূমিকভাবে কোনও ধরণের কাজ করতে সক্ষম হয়েছি,

    const chunkSize = 5;

    array
      .map((e, i) => {
        return i % chunkSize === 0 ?
           selected.slice(i, i + chunkSize)
         : null;
      })
      .filter(e => e);

তবে আমি এটি উল্লম্বভাবে কাজ করতে অক্ষম। কিভাবে আমি এটি করতে পারব?

সম্পাদনা:

অন্য একটি উত্তর থেকে প্রস্তাবিত সমাধানটি subarrays দেয়, যা আমি এই প্রশ্নে জিজ্ঞাসা করেছি তা নয়।


আপনি সারিটির জন্য সূচকটি গণনা করতে পারেন।

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18],
    chunk = 5,
    result = array.reduce((r, v, i) => {
        (r[i % chunk] = r[i % chunk] || []).push(v);
        return r;
    }, []);
    

result.forEach(a => console.log(...a));


এখানে একটি স্থির-কমপ্যাক্ট তবে পঠনযোগ্য সংস্করণ।

const columnize = (items, rows) => {
  const toColumns = (table, item, iteration) => {
    let row = iteration % rows;

    table[row] = table[row] || [];
    table[row].push(item);

    return table;
  };

  return items.reduce(toColumns, []);
};

যা হিসাবে ব্যবহৃত হবে:

const numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ];

console.log(columnize(numbers, 5));

https://jsfiddle.net/69fshprq/

প্রশ্নগুলি জিজ্ঞাসা করার সাথে সাথে এটি আউটপুট দেওয়ার একটি উপায় is আমি ব্যবধানের দিকে কড়া মনোযোগ দিচ্ছি না, আমি এটি স্ট্রিং প্যাডিং ফাংশন বা বাস্তবায়নের কৌশলতে রেখে দেব।

const numbers = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ]

// <pre id="out"></pre>
let out = document.getElementById('out')
let list = columnize(numbers, 5)

for (var column in list) {
    var item = list[column]
    var line = item.reduce((line, item) => line + item + '    ', '')

    out.textContent += line + ' \n'
}

https://jsfiddle.net/t60rfcpe/






javascript