Lodash。如何从数组对象获取聚合数组

时间:2019-11-06 11:54:47

标签: javascript lodash

例如,我有一个数组:

const reference = [{id: 1, value: 10}, {id: 2, value: 10}, {id: 3, value: 10}, {id: 4, value: 5}];

如何从引用中获取数组值,例如

const result = [0, 10, 20, 25];

第一步始终= 0

第二步0 + 10 = 10

第三步0 + 10 + 10 = 20

第四步0 + 10 + 10 + 5 = 25

3 个答案:

答案 0 :(得分:1)

您可以缩小数组,并将当前的value添加到最后的总和:

const reference = [{id: 1, value: 10}, {id: 2, value: 10}, {id: 3, value: 10}, {id: 4, value: 5}];

const result = reference
  .reduce((r, o, i) => {
    r.push(i === 0 ? 0 : r[r.length - 1] + o.value);
    
    return r;
  }, [])
  
console.log(result);

答案 1 :(得分:0)

您可以通过对总和进行闭合来映射值,并为第一个元素取零。

TypeError: 'int' object is not iterable

答案 2 :(得分:0)

我这样做的方式是使用Array.reduce方法,如下所示:

     BEGIN:VCALENDAR' . "\r\n" .
    'PRODID:-Canada\`s Restoration Services' . "\r\n" .
    'X-WR-RELCALID:'.$icsID.
    'VERSION:2.0' . "\r\n" .
    'METHOD:CANCEL' . "\r\n" .
    'BEGIN:VTIMEZONE' . "\r\n" .
    'TZID:Eastern Time' . "\r\n" .
    'BEGIN:STANDARD' . "\r\n" .
    'DTSTART:20091101T020000' . "\r\n" .
    'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11' . "\r\n" .
    'TZOFFSETFROM:-0400' . "\r\n" .
    'TZOFFSETTO:-0500' . "\r\n" .
    'TZNAME:EST' . "\r\n" .
    'END:STANDARD' . "\r\n" .
    'BEGIN:DAYLIGHT' . "\r\n" .
    'DTSTART:20090301T020000' . "\r\n" .
    'RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3' . "\r\n" .
    'TZOFFSETFROM:-0500' . "\r\n" .
    'TZOFFSETTO:-0400' . "\r\n" .
    'TZNAME:EDST' . "\r\n" .
    'END:DAYLIGHT' . "\r\n" .
    'END:VTIMEZONE' . "\r\n" .  
    'BEGIN:VEVENT' . "\r\n" .
    'ORGANIZER;CN="'.$fromName.'":MAILTO:'.$fromAddress. "\r\n" .
    'ATTENDEE;CN="'.$toName.'";ROLE=REQ- 
     PARTICIPANT;RSVP=TRUE:MAILTO:'.$toAddress. "\r\n" .
    'LAST-MODIFIED:' . date("Ymd\TGis") . "\r\n" .
    'UID:CALEVENT_TS'.$icsID ."\r\n" .
    'DTSTAMP:'.date("Ymd\TGis"). "\r\n" .
    'DTSTART;TZID="Eastern Time":'.date("Ymd\THis",strtotime($startTime)). "\r\n" .
    'DTEND;TZID="Eastern Time":'.date("Ymd\THis", strtotime($endTime)). "\r\n" .
    'TRANSP:OPAQUE'. "\r\n" .
    'SEQUENCE:'.$sequence. "\r\n" .
    'X-MICROSOFT-CDO-APPT-SEQUENCE:'.$sequence. "\r\n". 
    'SUMMARY:' . $subject . "\r\n" .
    'LOCATION:' . $location . "\r\n" .
    'CLASS:PUBLIC'. "\r\n" .
    'PRIORITY:5'. "\r\n" .
    'STATUS:CANCELLED' . "\r\n" .
    'BEGIN:VALARM' . "\r\n" .
    'TRIGGER:-PT15M' . "\r\n" .
    'ACTION:DISPLAY' . "\r\n" .
    'DESCRIPTION:Reminder' . "\r\n" .
    'END:VALARM' . "\r\n" .
    'END:VEVENT'. "\r\n" .
    'END:VCALENDAR'. "\r\n"

希望有帮助