检查对象数组

时间:2018-02-14 15:31:34

标签: javascript arrays underscore.js

例如我有一个数组:

reports = [
{comment:"asdasd", date:"13-02-2018", issueId:"1005"},
{comment:"asdasd", date:"14-02-2018", issueId:"1005"},
{comment:"asd123123asd", date:"14-02-2018", issueId:"1006"},
]

我不明白如何检查一个问题(对象)是否得到了与昨天类似的评论 - 将它们传递给新数组。 在我的例子中,我们看到issueId:“1005”在今天和昨天得到了类似的评论,所以这两个对象应该转到新数组(任何新数组)。

此外,我今天和昨天的日期与moment.js相似

 const today = moment().format('DD-MM-YYYY');
 const yesterday = moment().subtract(1, 'day').format('DD-MM-YYYY');

我可以自由使用ES5,ES6,underscore.js等。 但是我被困住了,并且不知道如何做到这一点。

修改 在我的情况下类似的评论: 评论: '123123asd' 评论: '123123asd' 很相似。 如果我说下一个“跳舞”的主要想法可能会更清楚: 例如,我有2个空数组:一个用于来自报告的对象,其中今天和昨天的“评论”类似,另一个数组 - 用于今天,昨天和前天的评论相似的对象

2 个答案:

答案 0 :(得分:0)

尝试:

let newArray = [];
for(let i = 0 ; i < reports.length ; i++){
    for(let x = 0 ; x < reports.length ; x++){
        if(i != x){
            if(reports[i].comment == reports[x].comment){
                newArray.push(reports[x])
            }
        }
    }
}

这是你想要的吗?让我知道它是否对你有所帮助:)。

答案 1 :(得分:0)

  

我可以自由使用ES5,ES6,underscore.js等。

使用Ramda(http://ramdajs.com

var duplicates = R.groupWith((a, b) => a.comment === b.comment && a.issueId === b.issueId, reports).filter(a => a.length > 1)