मेरे पास वस्तुओं की एक सरणी है जो इस तरह दिखती है:

const users = [{name: 'John', gender: 'Male', orders: 20},
    {name: 'Doe', gender: 'Male', orders: 8},
    {name: 'Ada', gender: 'Female', orders: 10},
    {name: 'David', gender: 'Male', orders: 30}];

मुझे डुप्लिकेट लिंगों की संख्या गिनने और वस्तुओं में स्थित लिंग के आधार पर ऑर्डर की मात्रा का योग करने की आवश्यकता है। मैं चाहता हूं कि अंतिम सरणी इस तरह दिखे:

[{gender: 'Male', count: 3, totalOrders: 58}, {gender: 'Female', count: 1, totalOrders: 10}]

यह वह कोड है जो मेरे पास अब तक है:

const usersGender = users.map((user) => user.gender);

const result = Object.values(usersGender.reduce((a, b) => {
  a[b] = a[b] || [b, 0];
  a[b][1]++;
  return a;
},{})).map(item => ({gender: item[0], count : item[1]}));

console.log(result);

उपरोक्त कोड से मेरा आउटपुट है:

[{ gender: 'Male', count: 3 }, { gender: 'Female', count: 1 }]

धन्यवाद।

1
Olusegun 16 जिंदा 2021, 13:09

1 उत्तर

सबसे बढ़िया उत्तर

आप किसी वस्तु के साथ एकत्र कर सकते हैं और उससे मूल्य प्राप्त कर सकते हैं।

const
    users = [{ name: 'John', gender: 'Male', orders: 20 }, { name: 'Doe', gender: 'Male', orders: 8 }, { name: 'Ada', gender: 'Female', orders: 10 }, { name: 'David', gender: 'Male', orders: 30 }],
    result = Object.values(users.reduce((r, { gender, orders }) => {
        r[gender] ??= { gender, count: 0, totalOrders: 0 };
        r[gender].count++;
        r[gender].totalOrders += orders;
        return r;
    }, {}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
5
Nina Scholz 16 जिंदा 2021, 13:15