是否有_lodash方法从数组中删除数组中字段值的行?

时间:2014-01-18 07:56:47

标签: javascript lodash

我正在使用以下功能:

   remove: function (arr, property, num) {
            for (var i in arr) {
                if (arr[i][property] == num)
                    arr.splice(i, 1);
            }
        },

该功能有效,但现在我的应用程序使用_lodash库,并且正在使用所有现代IE8及以上浏览器,我想知道是否有更有效的方法使用_lodash或其他一些浏览器本机方法来完成相同的功能。

2 个答案:

答案 0 :(得分:0)

有一些lodash函数可以帮助您解决此问题,例如过滤和删除:

arr = _.remove(arr,function(row){return row[property] == num });

另请注意,lodash方法不会改变您传入的原始数组(与您的示例不同),因此您需要执行arr = ....

答案 1 :(得分:0)

我不相信lodash可以帮你解决这个问题。它有_.remove,但会返回 new 数组,而您正在修改现有数组。

请注意,您现有的remove函数有一个错误:如果数组有两个连续匹配的条目,它将失败(留下匹配的条目)。 (Demonstration)此外,for-in不用于循环遍历数组索引,它枚举属性名称。 (this blog postthis SO answer中的更多信息。)要正确执行此操作,请向后循环;这是一个修复它的最小变化:

remove: function (arr, property, num) {
            for (var i = arr.length - 1; i >= 0; --i) {
                if (arr[i][property] == num)
                    arr.splice(i, 1);
            }
        },

以下是行动中的变化:http://jsbin.com/OTiZInU/2