繁体   English   中英

删除对象数组中的重复项

[英]Remove duplicates in an array of objects

我读过一些帖子,其中从数组中删除了重复项。 例如,具有“一个”,“一个”,“两个”,“三个”的数组将使用我在某些帖子中找到的代码返回“一个”,“两个”,“三个”。 我需要删除两个值,因此“一个”,“一个”,“两个”,“三个”将返回“两个”,“三个”。 我正在解析文件并基于正则表达式搜索项目。 这就是我要编写的代码。 有时我正在解析的文件中存在重复数据。 我需要删除该数据。

function parseText(text)
    {
        var records = text.match(fileRegex);
        var fileArray = [];


        if (records != null) {
            records.forEach(function (element, index, array) {
                var matches = elementRegex.exec(element);

                if (matches != null) {
                    var year = matches[parseSettings.ParseYearPosition];
                    if (year == 2)
                    {
                        year = "20" + year;
                    }
                    var journalDate = new Date(year,
                        matches[parseSettings.ParseMonthPosition] - 1,
                        matches[parseSettings.ParseDayPosition],
                        matches[parseSettings.ParseHourPosition],
                        matches[parseSettings.ParseSecondPosition], 0, 0);

                    var file = {
                        Id: null,
                        ImportDate: moment(importDate).format(),
                        JournalDate: moment(journalDate).format(),
                        TraceNumber: parseInt(matches[parseSettings.ParseTraceNumberPosition]),
                        Amount: parseFloat(matches[parseSettings.ParseAmountPosition]),
                        Deleted: false,
                        Dirty: true
                    };
                    fileArray.push(file);

                }
            });

           deferred.resolve(fileArray);
        }

您可以使用简单的for循环来检查fileArray [i] == fileArray [i + 1],如果是,则从数组中将它们拼接起来。

更新

因此,在解析fileArray之前,for循环将如下所示:

for(var i = 1; i <= fileArray.length;) {
    if(fileArray[i] == fileArray[i-1]) {
        fileArray.splice(i-1, 2);
        i+=2;
    }
    else
        i++;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM