首页 > 解决方案 > 如何在 JS 中执行过滤以修复浏览器冻结问题

问题描述

我有一个搜索框,它从以下数组中过滤数据,

var arr = [
 {"unAssigned": { "ddlItems": [{label:L1u},{label:L2u}]}},
 {"EE01": { "ddlItems": [{label:L2e},{label:L3e},.......{label:L900e}]}},
 {"JobTitle": { "ddlItems": [{label:L1j},{label:L2j}]}},
 {"JobFunction": { "ddlItems": [{label:L1jf},{label:L2jf},....{label:L880jf]}},
 {"Manager": { "ddlItems": [{label:L1m},{label:L2m},...{label:L777m]}}
]

函数过滤数组,

function filterBySearchText(searchString) {
    angular.forEach(_filters, function (filter) {
        angular.forEach(filter.ddlItems, function (ddlItem) {
            if ( ddlItem.label.indexOf(filterText) -1) {
                var result = {};
                angular.copy(ddlItem, result);
            }
        });
    });
}

由于“ddlItems”中存在大量数据,IE11 浏览器被锁定并冻结。有什么方法可以改变循环结构并使其工作。谢谢。

标签: javascriptangularjsfor-loopforeach

解决方案


推荐阅读