javascript - 批评我的 JavaScript 搜索数组函数

标签 javascript jquery jquery-plugins

我最近一直在做大量的 Ajax 工作,并且使用我的许多领域对象转换了它们的 JavaScript 对应物。我发现自己编写了几个循环遍历对象数组以按属性值进行搜索的函数。我决定编写一个简单的 jQuery 插件,它允许我搜索原始或复杂类型的数组。

注意:这是我第一次尝试编写 jQuery 插件。我不确定我是否以正确的方式去做。我主要关心的是搜索逻辑的效率和跨浏览器支持。

谢谢!

要批评的代码:

$(function() {
    $.indexOfArray = function (search, array) {
        var keys = [];
        var index = -1;
        var primitiveType = true;
        for (var propertyName in search) {
            primitiveType = false;
            keys.push(propertyName);
        }

        if ($.isArray(array)) {
            for (var a = 0; a < array.length; a++) {
                var match = 0;
                if (primitiveType && array[a] == search) {
                    index = a;
                    break;
                }
                else if (!primitiveType) {
                    for (var b = 0; b < keys.length; b++) {
                        if (search[keys[b]] == array[a][keys[b]]) {
                            match++;
                        }
                    }
                    if (match == keys.length) {
                        index = a;
                        break;
                    }
                }

            }
        }
        return index;
    }
});

简单的使用示例(它也适用于原始类型数组,如字符串或整数):

var testArray = [{Id:1, FirstName: 'John'}, {Id:2, FirstName: 'Jake'}, {Id:2, FirstName: 'Jason'}];

var selectedPerson = testArray[$.indexOfArray({Id:2}, testArray)];

最佳答案

就跨浏览器而言,您真的没有什么可担心的。

就效率而言,这还不错,尽管您可能可以缓存一些值,例如,您经常查找数组的 .length 属性。还有 keys[b]

关于javascript - 批评我的 JavaScript 搜索数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107090/

相关文章:

javascript - 如何将值传递到 highcharts?

javascript - 在 JS 中将过滤器数组应用于数组的优雅方法

javascript - textarea 中的输入不显示为输入的内容

javascript - 减少多个 if else 语句

javascript - div 的子元素高度相同减去顶部和底部填充

jQuery UI Datepicker 显示在 Google Chrome 中的表单提交上

javascript - 如何更改工具提示背景颜色,工具提示显示在 td

javascript - FlowJS - 无法识别可选字段何时有值

javascript - 立即监控文本区域中的特定字符串

javascript - 寻找基于网络的客户端表单编辑器