मेरे पास 2 वस्तुओं के साथ एक सरणी है।

var sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}];

मैं प्रत्येक ऑब्जेक्ट में केवल कम/मानचित्र/फ़िल्टर/प्रत्येक फ़ंक्शन के लिए मूल्य का योग कैसे कर सकता हूं?

आउटपुट [10, 14] होना चाहिए

2
Chikorio 10 फरवरी 2017, 11:01
3
स्टैक ओवरफ़्लो में आपका स्वागत है! SO एक मुफ्त कोडिंग सेवा नहीं है। समस्या को स्वयं हल करने के लिए आपको कुछ प्रयास करने होंगे। यदि आप इसे काम नहीं कर पा रहे हैं, तो आपने जो प्रयास किया है उसे पोस्ट करें और हम इसे ठीक करने में आपकी सहायता करेंगे।
 – 
Barmar
10 फरवरी 2017, 11:06

6 जवाब

आप ths ऑब्जेक्ट की कुंजियों को पुनरावृत्त करके वस्तुओं और मूल्यों को मैप कर सकते हैं और सभी गुणों का मान जोड़ सकते हैं।

उपयोग की जाने वाली विधियाँ:

  • Array#map के लिए प्रत्येक आइटम के लिए परिणाम लौटाना

  • Object.keys के लिए किसी वस्तु के सभी गुण प्राप्त करना

  • Array#reduce के लिए मूल्यों को सारांशित करना

var data = [{ a: 1, b: 2, c: 3, d: 4 }, { a: 2, b: 3, c: 4, d: 5 }],
    sum = data.map(function (object) {
        return Object.keys(object).reduce(function (sum, key) {
            return sum + object[key];
        }, 0);
    });

console.log(sum);

बिना चाबी का योग 'a'

var data = [{ a: 1, b: 2, c: 3, d: 4 }, { a: 2, b: 3, c: 4, d: 5 }],
    sum = data.map(function (object) {
        return Object.keys(object).reduce(function (sum, key) {
            return sum + (key !== 'a' && object[key]);
        }, 0);
    });

console.log(sum);
5
Nina Scholz 10 फरवरी 2017, 21:28
या, समान रूप से, शॉर्टहैंड का उपयोग करते हुए: sum = data.map(o => Object.keys(o).reduce((s,k) => s + o[k], 0));
 – 
Andrew Willems
10 फरवरी 2017, 11:49
धन्यवाद, कैसे के बारे में अगर मैं (बी सी डी) केवल योग करना चाहता हूं, (ए) को छोड़कर। आउटपुट [9, 12] होगा।
 – 
Chikorio
10 फरवरी 2017, 19:43

Array.prototype का उपयोग करके संक्षिप्त समाधान। कम करें () फ़ंक्शन:

var sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}],
    result = sum.reduce(function (r, o) {
        r.push(Object.keys(o).reduce(function(r, b){ return r + o[b]; }, 0));
        return r;
    }, []);

console.log(result);
0
RomanPerekhrest 10 फरवरी 2017, 11:07
1
क्या होगा यदि आपके पास इस तरह की वस्तु है श्रेणी:{'1':200,'2':300}
 – 
Zaheer Ahmad
21 मई 2018, 23:13

निम्नलिखित कोड में, o सरणी में प्रत्येक वस्तु है, t संचित कुल योग है, p जोड़ी जा रही वस्तु की संपत्ति है।

const sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}];

const result = sum.map(o => Object.keys(o).reduce((t, p) => t + o[p], 0));

console.log(result);
0
Andrew Willems 10 फरवरी 2017, 11:10

संस्करण के लिए es6:

let sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}];

let result = [], objSum;
for (let item of sum) {
    objSum = 0;
    for (let property in item) {
        if (item.hasOwnProperty(property)) {
            objSum += item[property];
        }
    }

    result.push(objSum);
}
console.log(result);//[10, 14]
0
emilz0r 10 फरवरी 2017, 11:36

आप 2017 में शुद्ध जेएस में निम्नानुसार कर सकते हैं।

var sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}],
   sums = sum.map(a => Object.values(a).reduce((p,c) => p+c));
console.log(sums);
0
Redu 10 फरवरी 2017, 22:30

या आप लोडाश जैसी उपयोगिता पुस्तकालय का उपयोग कर सकते हैं।

var _ = require('lodash');

var sum = [{a:1, b:2, c:3, d:4},{a:2, b:3, c:4, d:5}];
var result = _.map(sum, function(obj) {
      return _.reduce(_.values(obj), function(sum, n) {
          return sum + n;
      }, 0);
});
console.log(result);
-1
Nico Van Belle 10 फरवरी 2017, 11:09