2017-11-07 8 views
1

私はタイプのnオブジェクトが含まれていArray<object>持っユニークなDateTime文字列を持つ配列ですか?

{ 
    name: 'random', 
    startDate: '2017-11-10 09:00', 
    endDate: '2017-11-23 11:00' 
} 

私はstartDate(およびそのユニークな、2017-11-10 09:002017-11-10 10:00はありません保持新しいArray<objectでこの配列をフィルタリングするために、結果をレンダリングする前に、ある欲しいですこのDateが何回データ配列に含まれているかを示します。どうすればそれを達成できますか?

+0

ですか?あなたはロダシュですか? – Dmitry

+0

さて、OPの質問を慎重に読んで、Qを「重複」とマークしてリンクされた回答をチェックすると、そこにはアプローチがないことがはっきりとわかります.OPはカウンタ項目のリスト最初に提供された日付リストからユニークな開始日を保持するが、この元のリストからユニークな開始日の合計数も保持する。したがって、ここで問題のOPを解決する*コミュニティ*によって提供される新しい "重複"リンクがないかぎり、このQを「重複」から外してください。 –

+0

@PeterSeliger私は質問を再開することに投票しました..私はあなたに完全に同意しています..コメントありがとう –

答えて

1

あなたはまず、このようなArray.prototype.reduce()を使用することができます:それは角度

const dates = [{ 
 
    name: 'random', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
    }, 
 
    { 
 
    name: 'random', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
    }, 
 
    { 
 
    name: 'random', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
    }, 
 
    { 
 
    name: 'random', 
 
    startDate: '2017-08-12 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
    } 
 
]; 
 

 
const hash = dates.reduce((a, c) => (a[c.startDate] = ++a[c.startDate] || 1, a), {}); 
 
const uniqueDates = Object.keys(hash).map(k => ({ startDate: k, counter: hash[k] })); 
 

 
console.log(uniqueDates);
.as-console-wrapper { max-height: 100% !important; top: 0; }

1

var dateList = [{ 
 
    name: 'foo', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
}, { 
 
    name: 'bar', 
 
    startDate: '2017-11-10 09:01', 
 
    endDate: '2017-11-23 11:00' 
 
}, { 
 
    name: 'baz', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-24 10:00' 
 
}, { 
 
    name: 'biz', 
 
    startDate: '2017-11-10 09:01', 
 
    endDate: '2017-11-25 09:00' 
 
}, { 
 
    name: 'quick', 
 
    startDate: '2017-11-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
}, { 
 
    name: 'brown', 
 
    startDate: '2017-12-10 09:00', 
 
    endDate: '2017-11-23 11:00' 
 
}, { 
 
    name: 'fox', 
 
    startDate: '2017-12-10 10:00', 
 
    endDate: '2017-11-23 11:00' 
 
}]; 
 

 

 
var startDateCountList = dateList.reduce(function (collector, dateItem) { 
 
    var 
 
    startDate = dateItem.startDate, 
 
    dateCount = collector.registry[startDate]; 
 

 
    if (!dateCount) { 
 
    dateCount = collector.registry[startDate] = { 
 
     startDate : dateItem.startDate, 
 
     count  : 0 
 
    }; 
 
    collector.list.push(dateCount); 
 
    } 
 
    dateCount.count += 1; 
 

 
    return collector; 
 

 
}, { 
 

 
    registry: {}, 
 
    list:  [] 
 

 
}).list; 
 

 

 
console.log('startDateCountList : ', startDateCountList);
.as-console-wrapper { max-height: 100%!important; top: 0; }

関連する問題