【发布时间】:2018-02-15 16:04:08
【问题描述】:
服务器给了我下一个数组:
let reportsInDB = [
{comment:"asdasd", date:"13-02-2018", issueId:"1005"},
{comment:"asdasd", date:"14-02-2018", issueId:"1005"},
{comment:"asdasd", date:"15-02-2018", issueId:"1005"},
{comment:"qwe", date:"13-02-2018", issueId:"1006"},
{comment:"asd123123asd", date:"14-02-2018", issueId:"1006"},
{comment:"asd123123asd", date:"15-02-2018", issueId:"1006"},
{comment:"lalala", date:"15-02-2018", issueId:"1007"},
]
有没有办法制作下一个:
比较具有今天日期的对象是否与“昨天”对象具有相同的注释(当然该对象的相同 issueId)并将其推送(可能不是推送整个对象,只是推送 issueId)到新数组,arrRisk = [] for例如,但如果 cmet 连续 3 天相同 - 推送到另一个数组,例如 arrIncident = []。
所以最终的输出应该类似于下一个:
arrRisk = ["1006"]
arrIncident = ["1005]
issueId 为 1007 的对象不应转到任何新数组,因为昨天或前天没有与其 issueId 相同的注释。
我还得到了服务变量,这应该有助于比较:
today = "15-02-2018"
yesterday = "14-02-2018"
beforeYesterday = "13-02-2018"
我正在尝试类似的东西
reportsInDB.map(x => {
reportsInDB.map(r =>{
if( x.date === today &&
r.date === yesterday &&
x.issueId === r.issueId &&
x.comment === r.comment
){
reportsToRisk.push(r)
}
})
})
但输出完全不是我需要的(例如,我不需要将 issueId 1005 推送到 riskArray)并且双三重循环并不是我所知道的那么好......
这就是我在 jsfiddle 中尝试的方法
希望我的解释清楚最终结果应该是什么。
【问题讨论】:
-
如果使用
.map()时没有return,那么.map()是错误的方法 -
@Andreas 我明白了.. 我用
map()只是为了循环.. -
.reduce是要走的路。您需要帮助编写它吗? -
@Andrew 我认为站在
.reduce一边,但不知道如何实现它,所以如果你能提供帮助,那就太好了! -
你的数据能保证按issueId和date排序吗?
标签: javascript arrays object underscore.js