删除对象数组中的重复项

时间:2015-06-10 15:23:41

标签: javascript arrays angularjs

我已经阅读了一些从数组中删除重复项的帖子。例如,一个数组包含"一个","一个","两个","三个"将返回"一个","两个","三个"使用我在某些帖子中找到的代码。我需要删除这两个值,因此"一个","一个","两个","三个",将返回"两个& #34;,"三"。我正在解析文件并根据正则表达式搜索项目。这就是我对代码所拥有的。有时我在文件中存在重复数据,我正在解析。我需要删除该数据。

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);
        }

1 个答案:

答案 0 :(得分:0)

您可以使用一个简单的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++;
}