javascript - Lodash 的差异在于行为不符合预期

标签 javascript lodash

我一直在尝试使用 lodash (4.13.1) _.differenceBy,但我一定错过了一些东西。

我这里有一个 fiddle :http://jsfiddle.net/cmwye4z1/2/

这是 JavaScript:

$scope.files_a = [
    {'name': 'file1.wav', 'size': 989010, 'duration': 44.953, 'temp': 1},
    {'name': 'file2.wav', 'size': 326984, 'duration': 14.860, 'temp': 1},
    {'name': 'file3.wav', 'size': 584723, 'duration': 28.583, 'temp': 1},
    {'name': 'file4.wav', 'size': 483829, 'duration': 22.859, 'temp': 1},
    {'name': 'file5.wav', 'size': 283949, 'duration': 9.495, 'temp': 1},
    {'name': 'file6.wav', 'size': 839372, 'duration': 38.584, 'temp': 1},
    {'name': 'file7.wav', 'size': 784949, 'duration': 29.594, 'temp': 1}
];

$scope.files_b = [
    {'name': 'file8.wav', 'size': 989010, 'duration': 44.953, 'temp': 'auto'},
    {'name': 'file2.wav', 'size': 326984, 'duration': 14.860, 'temp': 1}
];

$scope.differenceBy = _.differenceBy($scope.files_a, $scope.files_b, ['name', 'size', 'duration']);

我期望的是:

$scope.differenceBy = [
    {'name': 'file1.wav', 'size': 989010, 'duration': 44.953, 'temp': 1},
    {'name': 'file3.wav', 'size': 584723, 'duration': 28.583, 'temp': 1},
    {'name': 'file4.wav', 'size': 483829, 'duration': 22.859, 'temp': 1},
    {'name': 'file5.wav', 'size': 283949, 'duration': 9.495, 'temp': 1},
    {'name': 'file6.wav', 'size': 839372, 'duration': 38.584, 'temp': 1},
    {'name': 'file7.wav', 'size': 784949, 'duration': 29.594, 'temp': 1}
];

删除了 file2.wav,但我得到的只是 $scope.files_a。

如果我删除括号,则会得到 file3、file4、file5、file6 和 file7。

如果我正确理解文档,迭代器可以是一个数组,但也许我错了?有人可以帮我纠正一下吗?

最佳答案

换句话说,我的评论是要么等待更聪明的人给出有关 DifferenceBy 如何真正使用数组参数的答案,要么使用...

$scope.differenceBy = _.differenceBy($scope.files_a, $scope.files_b, function(obj) {
    return obj.name + obj.size;
});

它在你的 fiddle 中似乎可以正常工作。

关于javascript - Lodash 的差异在于行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38214915/

相关文章:

javascript - 使用异步请求初始化对象

javascript - Google 如何在未经用户许可的情况下获取当前位置

javascript - 使用 join 打印数组中所有对象的特定属性

javascript将一个对象的所有属性与其他对象进行比较

javascript - 如何从对象数组中获取键和每个键的计数

javascript - 幻灯片在页面加载时隐藏,但在单击点后变得可见

javascript - jQuery - 使用 anchor 链接将元素滚动到屏幕中间而不是顶部

javascript - lodash 中的 transform 和 reduce 有什么区别

javascript - 将 lodash _.uniqBy() 转换为原生 javascript

javascript - 添加子对象的公共(public)属性并附加 Parent Key (Node.js)