按对象属性的唯一数组 [英] Unique array by object property

查看:74
本文介绍了按对象属性的唯一数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何根据属性使对象数组唯一?在这种情况下,字段":

How do I make an array of objects unique based on a property? In this instance, "field":

0: Object
field: "name"
operator: "eq"
value: "d"

1: Object
field: "gridSearch"
operator: "contains"
value: "1"

2: Object
field: "gridSearch"
operator: "contains"
value: "12"

作为参考,这是我在解决此问题时所使用的一些代码:

For reference here is the bit of code I'm using where this problem is concerned:

$('#gridSearch').keyup(function() {
    var currentFilters = $('.k-grid').data("kendoGrid").dataSource.filter();

    currentFilters.filters.push({
        field: 'gridSearch',
        operator: 'contains',
        value: $(this).val()
    })

    console.log(currentFilters.filters)
})

推荐答案

您可以使用 jQuery.extend 为此;由于您想将其用于剑道网格,因此您可以执行以下操作(示例仅适用于没有嵌套的过滤器):

You can use jQuery.extend for this; since you want to use this for a Kendo Grid, maybe you could do something like this (example only works for filters without nesting):

kendo.ui.Grid.fn.addOrUpdateFilter = function (filter) {
    var filterConfig = this.dataSource.filter(),
        filters,
        isNewFilter = true;

    if (filterConfig) {
        filters = filterConfig.filters;
        for (var i = 0; i < filters.length; i++) {
            if (filters[i].field === filter.field) {
                // there already was a filter for this field, so update it
                $.extend(filters[i], filter);
                isNewFilter = false;
            }
        }
    } else {
        filters = [];
    }

    // there was no filter for this field, so add it
    if (isNewFilter) {
        filters.push(filter);
    }

    this.dataSource.filter(filters);
}

因此您可以在处理程序中执行此操作:

so you could do this in your handler:

$('#gridSearch').keyup(function() {
    var grid = $('.k-grid').first().data("kendoGrid");

    grid.addOrUpdateFilter({
        field: 'gridSearch',
        operator: 'contains',
        value: $(this).val()
    });
})

这篇关于按对象属性的唯一数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆