কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে '_id' কী-এর একই ভ্যালু 가진 অবজেক্টগুলো গ্রুপ করা

মান লিয়ে, আমাদের নিচের মত অবজেক্টের একটি অ্যারে আছে -

const arr = [ 
  {_id: "1", S: "2"}, 
  {_id: "1", M: "4"}, 
  {_id: "2", M: "1"}, 
  {_id: "" , M: "1"}, 
  {_id: "3", S: "3"} 
];

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারে গ্রহণ করবে এবং '_id' কী-এর একই ভ্যালু 가진 সব অবজেক্টগুলো একসাথে গ্রুপ করবে।

অতএব, চূড়ান্ত আউটপুট হবে -

const output = [ 
  {_id: "1", M: "4", S: "2", Total: "6"}, 
  {_id: "2", M: "1", S: "0", Total: "1"}, 
  {_id: "6", M: "1", S: "0", Total: "1"}, 
  {_id: "3", M: "0", S: "3", Total: "3"} 
];

উদাহরণ

const arr = [ 
  {_id: "1", S: "2"}, 
  {_id: "1", M: "4"}, 
  {_id: "2", M: "1"}, 
  {_id: "6", M: "1"}, 
  {_id: "3", S: "3"} 
]; 
const pickAllConstraints = arr => { 
  let constraints = []; 
  arr.forEach(el => { 
    const keys = Object.keys(el); 
    constraints = [...constraints, ...keys]; 
  }); 
  return constraints.filter((el, ind) => el !== '_id' && ind === constraints.lastIndexOf(el)); 
}; 
const buildItem = (cons, el = {}, prev = {}) => { 
  const item = {}; 
  let total = 0; 
  cons.forEach(i => { 
    item[i] = (+el[i] || 0) + (+prev[i] || 0); 
    total += item[i]; 
  }); 
  item.total = total; 
  return item; 
}; 
const buildCumulativeArray = arr => { 
  const constraints = pickAllConstraints(arr); 
  const map = {}, res = []; 
  arr.forEach(el => { 
    const { _id } = el; 
    if(map.hasOwnProperty(_id)){ 
      res[map[_id] - 1] = { 
        _id, ...buildItem(constraints, el, res[map[_id] - 1]) 
      }; 
    } else { 
      map[_id] = res.push({ 
        _id, ...buildItem(constraints, el) 
      }); 
    } 
  }); 
  return res; 
}; 
console.log(buildCumulativeArray(arr));

আউটপুট

কনসোলে আউটপুট হবে -

[ 
  { _id: '1', M: 4, S: 2, total: 6 }, 
  { _id: '2', M: 1, S: 0, total: 1 }, 
  { _id: '6', M: 1, S: 0, total: 1 }, 
  { _id: '3', M: 0, S: 3, total: 3 } 
]
  1. জাভাস্ক্রিপ্ট দিয়ে সমস্ত কুকি নাম অনুযায়ী লিস্ট করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে অবজেক্ট বনাম অ্যারে: কী/মান (key/value) জোড়ার জন্য ওয়ার্কঅরাউন্ড

  3. জাভাস্ক্রিপ্টে ভ্যালু অনুযায়ী অবজেক্ট গ্রুপ করা

  4. জাভাস্ক্রিপ্টে অবজেক্টের জন্য reduce মেথড অ্যাপ্লাই করা