有没有_lodash的方法可以从数组中删除行,条件是数组中字段的值



我正在使用以下函数:

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

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

我不相信 lodash 有什么可以帮助你的。它有 _.remove ,但这会返回一个新数组,并且您正在修改一个现有数组。

请注意,您现有的 remove 函数有一个错误:如果数组有两个连续的匹配条目,它将失败(留下匹配的条目)。(演示)此外,for-in 不是用于循环遍历数组索引,而是枚举属性名称。(更多内容在此博客文章和此 SO 答案中。要正确执行此操作,请向后循环;下面是修复它的最小更改:

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

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

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

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

最新更新