javascript数组去重

数组去重处理函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function uniqueArray(a) {
    var temp = new Array();
    for (var i = 0; i < a.length; i++) {
        if (!contains(temp, a[i])) {
            temp.length += 1;
            temp[temp.length - 1] = a[i];
        }
    }
    return temp;
}
function contains(a, e) {
    for (j = 0; j < a.length; j++) if (a[j] == e) return true;
    return false;
}

使用例子:

复制代码
/**
* @create: nelson
* @Eliminate duplicate items from qListview
* @eliminateDuplicate 
* @调用方式    
  $("#container").eliminateDuplicateVal(qListview);         
*/
$.fn.extend({
    eliminateDuplicateVal: function (qListview) {
        var This = $(this);
        var That = This.find(qListview);
        var _resultPanel = This.find("> .itemp_check_no strong");
        var _loading = This.find("> .loading");
        function init() {
            var html = "";
            var strFilterArr = new Array();
            var _select = This.find("> .item_check_field");
            That.find(">thead .rgHeader").each(function () {//拼select的option html字符串
                var str = $(this).text().trim();
                html += '<option>' + str + '</option>';
                strFilterArr.push(str);
            });
            if (html != "") {
                html = '<option></option>' + html;
                _select.html(html);
                if (That.find(">tbody .rgNoRecords").length != 1) {
                    _resultPanel.html(That.find(">tbody>tr").length);//初始化记录数
                    This.find("> .item_check_btn").click(function () {
                        _loading.css("display", "inline-block");//显示loading gif动画图片
                        setTimeout(function () {
                            var strFilter = _select.children("option:selected").text();
                            if (strFilter != "") {
                                var key = strFilterArr.indexOf(strFilter);
                                var strResultArr = new Array();
                                That.find(">tbody>tr").each(function () {
                                    $(this).css("display", "none");//全部行隐藏
                                    strResultArr.push($(this).find("td:eq(" + key + ")").text().trim());//建结果数组
                                });
                                strResultArr = uniqueArray(strResultArr);//去重
                                $.each(strResultArr, function (k, strValue) {
                                    That.find(">tbody>tr").each(function () {
                                        //显示过滤后的内容行
                                        var self = $(this);
                                        if (self.find("td:eq(" + key + ")").text().trim() == strValue) {
                                            self.css("display", "table-row");
                                            return false;
                                        }
                                    });
                                });
                                _resultPanel.html(strResultArr.length);
                            }
                            //setTimeout(function () {
                            _loading.css("display", "none");
                        }, 1000);
                        return false;
                    });
                }
                else {
                    This.find("> .item_check_btn").click(function () {
                        alert("请先在下方进行搜索再执行本操作!");
                        return false;
                    });
                }
            }

        }
        function uniqueArray(a) {
            var temp = new Array();
            for (var i = 0; i < a.length; i++) {
                if (!contains(temp, a[i])) {
                    temp.length += 1;
                    temp[temp.length - 1] = a[i];
                }
            }
            return temp;
        }
        function contains(a, e) {
            for (j = 0; j < a.length; j++) if (a[j] == e) return true;
            return false;
        }
        init();
    }
});
复制代码

 

posted @   Fast Mover  阅读(362)  评论(2编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
友情链接: A4纸尺寸 | 卡通头像 | +申请友情链接
点击右上角即可分享
微信分享提示