0

我正在使用以下功能:

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

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

4

2 回答 2

0

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

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

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

于 2014-01-18T08:11:57.187 回答
0

我不相信 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

于 2014-01-18T08:12:26.127 回答