Javascript extjs在将重复值存储到存储区之前删除重复值

Javascript extjs在将重复值存储到存储区之前删除重复值,javascript,extjs,Javascript,Extjs,我尝试在将重复值存储到存储区之前删除它。我只想在存储中存储一次相同的值。但下面的Ext.Array.unique行似乎不起作用。有人能帮我纠正一下吗。 多谢各位 var input1store = new Ext.data.Store({ fields: [{name: 'name'}], proxy: { type: 'ajax', url: 'www.requesturl.com?format=json&source1',

我尝试在将重复值存储到存储区之前删除它。我只想在存储中存储一次相同的值。但下面的Ext.Array.unique行似乎不起作用。有人能帮我纠正一下吗。 多谢各位

var input1store = new Ext.data.Store({
    fields: [{name: 'name'}],
    proxy: {
        type: 'ajax',
        url: 'www.requesturl.com?format=json&source1',
        reader: {
            type: 'json',
            root: 'xml.result'
        }
    },
    autoLoad: false,
    sorters: [{property: 'name', direction: 'asc'}],
    listeners:{
        load: function(rec){
            uniqueArray = Ext.Array.unique(rec.getRange());
        }
    }
});
您可以使用该方法筛选出加载后不希望出现在存储中的记录

请注意,存储将保留筛选出的记录的副本,如果调用了
clearFilter
(可能是您或使用存储的组件)它将恢复该副本。如果你想彻底清除这些记录,你必须删除该副本

Ext.create('Ext.data.Store', {
    fields: ['name'],

    // example data
    proxy: {
        type: 'memory',
        data: [{name: 'Foo'},{name:'Bar'},{a:'Baz'},{a:'Foo'},{a:'Bar'}],
    },

    listeners: {
        load: function(store) {
            // using a map of already used names
            const hits = {}
            store.filterBy(record => {
                const name = record.get('name')
                if (hits[name]) {
                    return false
                } else {
                    hits[name] = true
                    return true
                }
            })

            // delete the filtered out records
            delete store.snapshot
        },
    },
})

您可以在存储中指定
idProperty
值(idProperty==“name”)

.

这是什么版本的Ext?3.4?使用此代码,您到底想实现什么目标?加载存储,然后为局部变量赋值。结果应该是什么?我从www.requesturl.com?format=json&source1获取了数据。但这些数据有重复的价值。我想删除重复的值。然后将其放入Input1存储。这就是我想要的。我不确定这是否是一个很好的解决方案,它会起作用,但在其他属性上再次过滤时会出现问题,并会影响商店上的其他一些操作。也许最好使用Ajax.request加载数据,进行过滤,并只将唯一的值加载到存储中。起初,我想通过覆盖
加载记录
来实现这一点,但我认为这样做会更容易被OP理解。你应该澄清你的第一段来谈论你编辑过的答案。“你的代码是有意义的,只需更好地描述它就行了。@JeffDiederiks啊,好时光。”。在ES3中放置逗号真的没有完美的方法。这就是我今天要做的,太漂亮了!你觉得更好吗?