निम्नलिखित एक कोड है जिसे मैंने रिएक्ट ऐप में चार्ट जेएस का उपयोग करके बार चार्ट बनाने के लिए लागू किया है। यहां यह एक सरणी में सभी डेटा के साथ एक बार चार्ट बनाता है। लेकिन, मैं केवल एक्स-अक्ष - गंतव्य, वाई-अक्ष - नहीं में आउटपुट देने के लिए इस कोड को बदलना चाहता हूं। इस गंतव्य की घटना के बाद से इसमें कई बार-बार गंतव्य हैं। मैंने इसके लिए तरीके खोजे लेकिन मुझे सही समाधान नहीं मिला। क्या कोई मुझे ऐसा करने में मदद कर सकता है?

const dataArrayY4 = [];
res.data.map(item => {
  dataArrayY4.push(item.time)
})
const dataArrayX4 = []
res.data.map(item => {
  dataArrayX4.push(item.destination)
})
this.setState({
  data4: dataArrayY4,
  labels4: dataArrayX4,
});
0
user11725933 3 अप्रैल 2021, 10:33

2 जवाब

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

यह इस प्रकार किया जा सकता है:

const res = {
  data: [
    { time: 1, destination: 'A'},
    { time: 3, destination: 'A'},
    { time: 2, destination: 'B'}    
  ]
};

let tmp4 = [];
res.data.map((o, i) => {
  const existing = tmp4.find(e => e.destination == o.destination);
  if (existing) {
    existing.time += o.time;
  } else {
    tmp4.push({time: o.time, destination: o.destination});
  }
})

this.setState({
  data4: tmp.map(o => o.time);
  labels4: tmp.map(o => o.destination);
});

उपरोक्त कोड को Array.reduce() ="nofollow noreferrer">Array.map().

2
uminder 3 अप्रैल 2021, 12:20

मैं कोड को और अधिक कुशल बनाउंगा। dataArrayY4 एक सरणी होने के बजाय, मैं इसे एक ऐसी वस्तु बनाउंगा जिसमें मूल्य की कुंजी और प्रत्येक मान की घटना की संख्या हो। इस तरह, आप res.data . में सभी आइटमों की सभी घटनाओं की संख्या की गणना कर सकते हैं

const dataArrayY4 = {};
res.data.map(item => {
     dataArrayY4[item.destination] = (dataArrayY4[item.destination] || 0) + 1
 })
 
const dataArrayX4 = []
 res.data.forEach(item => {
    dataArrayX4.push(item.destination)
 })
this.setState({
    data4: dataArrayY4,
      labels4: dataArrayX4,
 });

फिर यदि आप किसी विशेष मूल्य की घटना को देखना चाहते हैं तो आप इसका उपयोग करते हैं। श्रीलंका

this.state.data4['Sri Lanka']
2
Udendu Abasili 3 अप्रैल 2021, 11:21