Как удалить дубликаты, используя jquery или extjs? - PullRequest
1 голос
/ 20 февраля 2012

Я хочу сохранить вывод в массиве и удалить дубликаты

 $(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "cview.xml",
        dataType: "xml",
        complete: function(data, status) {
            parseXml(data.responseXML);
        }
    });
});

function parseXml(xml) {
    $(xml).find("containmentView").each(function() {

        var tabarr = $(this).attr("type");
        alert(tabarr);


    });

}

XML feed

 <?xml version="1.0" encoding="utf-8"?>
        <entry>
        ----
        ----
        <cView type="D1">
                        <field name="TargetObjectClass">Disk</field>
                        <field name="TargetObjectName">DISK A1</field>
                        <field name="DisplayName">DISK-Name</field>
                        <field name="MaxAvgDataRate KB/sec">50.00 KB/sec</field>
                        <field name="MaxAvgQueueDepth">50.00</field>
                    </cView>
                    <cView type="D2">
                        <field name="TargetObjectClass">Disk</field>
                        <field name="TargetObjectName">DISK B2</field>
                        <field name="DisplayName"> Disk-Name 2 </field>
                        <field name="MaxAvgDataRate KB/sec">60.00 KB/sec</field>
                        <field name="MaxAvgQueueDepth">60.00</field>
                    </cView>


        ...
        </entry>

Ответы [ 2 ]

6 голосов
/ 20 февраля 2012

В ExtJS вы можете использовать уникальную функцию 1002 *:

var uniqueArray = Ext.Array.unique(duplicatesArray);

Похоже, что вы в основном используете jQuery, если бы вы ExtJSify кодоперация будет выглядеть примерно так:

var uniqueArray = []

Ext.define('myModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'TargetObjectClass', type: 'string'},
        {name: 'TargetObjectName', type: 'string'},
        {name: 'DisplayName', type: 'string'},
        {name: 'MaxAvgDataRate KB/sec', type: 'string'},
        {name: 'MaxAvgQueueDepth', type: 'numeric'}
    ]
});

var myStore = Ext.create('Ext.data.Store', {
    model: myModel,
    proxy: {
        type: 'ajax', 
        url: 'cview.xml',
        reader: 'xml'
    },
    autoLoad: true,
    listeners: {
        load: function(store) {
            uniqueArray = Ext.Array.unique(store.getRange());
        }
    }
});

Записи также получат каждое из свойств Ext.Model, чтобы их можно было отсортировать и т. д.

1 голос
/ 10 апреля 2014

Вы можете использовать Array.prototype.filter и Array.prototype.indexOf:

function removeDuplicatesFromArray (duplicatesArray) {
    if (!Array.isArray(duplicatesArray)) {
        return undefined;
    }
    var uniqueArray = duplicatesArray.filter(function(elem, pos) {
        return duplicatesArray.indexOf(elem) === pos;
    });
    return uniqueArray;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...