कैसे नक्शा करने के लिए सरणी तत्वों में जावास्क्रिप्ट

0

सवाल

केवल तत्वों है कि एक मूल्य है से अधिक या बराबर करने के लिए सीमा में रखा जाना चाहिए सरणी. फिर एक नई सरणी होगा किया जा करने के लिए बनाया जाएगा, जो होते हैं, कई वस्तुओं. इन वस्तुओं में से प्रत्येक जाएगा है, दो गुण, शुरू और अंत.

अगर वहाँ रहे हैं कई तत्वों को एक पंक्ति में (जो है एक टाइमस्टैम्प 10 मिनट के अलावा) है, वे वर्गीकृत किया जाएगा में एक ही वस्तु है । जहां शुरू मूल्य होगा टाइमस्टैम्प का पहला तत्व है और अंत में मूल्य हो जाएगा टाइमस्टैम्प के मूल्य के अंतिम तत्व समूह से अधिक 10 मिनट ।

अगर वहाँ नहीं हैं कई तत्वों के बाद, शुरू मूल्य होगा टाइमस्टैम्प और अंत हो जाएगा टाइमस्टैम्प अधिक 10 मिनट के लिए ।

const data = [{
    timestamp: '2021-11-23T14:00:00+0000',
    amount: 21
  },
  {
    timestamp: '2021-11-23T14:10:00+0000',
    amount: 27
  },
  {
    timestamp: '2021-11-23T14:20:00+0000',
    amount: 31
  },
  {
    timestamp: '2021-11-23T14:30:00+0000',
    amount: 29
  },
  {
    timestamp: '2021-11-23T14:40:00+0000',
    amount: 18
  },
  {
    timestamp: '2021-11-23T14:50:00+0000',
    amount: 17
  },
  {
    timestamp: '2021-11-23T15:00:00+0000',
    amount: 25
  },
  {
    timestamp: '2021-11-23T15:10:00+0000',
    amount: 21
  }
]

const threshold = 25
const aboveThreshold = data.filter(element => element.amount >= threshold)
const workSchedule = []

for (let i = 0; i < aboveThreshold.length; i++) {
  if (i === 0) {
    workSchedule.push({
      start: aboveThreshold[i].timestamp,
      end: aboveThreshold[i + 1].timestamp
    })
  }
  if (i > 0 && i < aboveThreshold.length - 1) {
    if (aboveThreshold[i].timestamp.slice(11, 13) === aboveThreshold[i + 1].timestamp.slice(11, 13)) {
      workSchedule.push({
        start: aboveThreshold[i].timestamp,
        end: aboveThreshold[i + 1].timestamp
      })
    }
  }
  if (i === aboveThreshold.length - 1) {
    workSchedule.push({
      start: aboveThreshold[i].timestamp,
      end: aboveThreshold[i].timestamp
    })
  }
}

console.log(workSchedule)

लेकिन अंत परिणाम मैं चाहता हूँ निम्नलिखित है:

[
    {
        start: '2021-11-23T14:10:00+0000',
        end: '2021-11-23T14:40:00+0000'
    },
    {
        start: '2021-11-23T15:00:00+0000',
        end: '2021-11-23T15:10:00+0000'
    }
]

मुझे आशा है कि मैं स्पष्ट था

arrays javascript typescript
2021-11-23 20:24:54
1

सबसे अच्छा जवाब

1

आप लागू कर सकते हैं एक साधारण समारोह को कम परिणाम प्राप्त करने के लिए आप चाहते हैं के साथ एक छोटा सा की मदद से Date वस्तु. यहाँ एक समाधान है:

const aboveThreshold = data.filter(element => element.amount >= threshold);

const nws = aboveThreshold.reduce((acc, v) => {
  const end = new Date(Date.parse(v.timestamp) + 600000);
  if (acc.length === 0) return [{ start: v.timestamp, end: end.toISOString() }];
  let diff = Date.parse(v.timestamp) - Date.parse(acc[acc.length - 1].end);
  // checks if the difference is less than 10 minutes
  if (diff <= 10 * 60 * 1000) {
    acc[acc.length - 1].end = end.toISOString();
  } else {
    acc.push({ start: v.timestamp, end: end.toISOString() });
  }
  return acc
}, []);

बाहर की जाँच करें कम प्रलेखन.

इस परिणाम यह देता है के साथ अपने डेटा

[{
  end: "2021-11-23T14:40:00.000Z",
  start: "2021-11-23T14:10:00+0000"
}, {
  end: "2021-11-23T15:10:00.000Z",
  start: "2021-11-23T15:00:00+0000"
}]
2021-11-23 22:14:24

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में