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


15

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

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 প্রদান করে, যা আমি এই প্রশ্নে জিজ্ঞাসা করেছি তা নয়।

উত্তর:


3

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

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/

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

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/


11

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

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));


খুব দ্রুত. এটি শ্লোগান দিতে আমার কিছুটা সময় লেগেছে, তবে আমি পেয়েছি আপনি আরও দ্রুত ছিলেন ..
ওয়েই

6

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

let result = [];
for (let i = 0; i < chunkSize; i++) {
    result[i] = [];
}

array.forEach((e,i) => {
    result[i % chunkSize].push(e);
});

console.log(result); 
/* 
Result : 
[ [ 1, 6, 11, 16 ],
  [ 2, 7, 12, 17 ],
  [ 3, 8, 13, 18 ],
  [ 4, 9, 14 ],
  [ 5, 10, 15 ] ]
*/


আপনার লুপের দরকার নেই। আমি ধরে নিয়েছি আপনি কীগুলি সেট করতে ব্যবহার করেছেন? আপনি ফরইচটিতে ঠিক একই নীতিটি করছেন, কেবলমাত্র একটি মডুলাস সহ কিছুটা জটিল
মার্টিজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.