gpt4 book ai didi

javascript - Lodash DifferenceBy 不按预期行事

转载 作者:行者123 更新时间:2023-11-29 14:41:03 25 4
gpt4 key购买 nike

我一直在尝试使用 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。

如果我对文档的理解正确,iteratee 可以是一个数组,但也许我弄错了?有人可以让我直截了当吗?

最佳答案

换句话说,我的意见是要么等待更聪明的人回答 differenceBy 如何真正与数组参数一起工作,要么使用...

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

这似乎在您的 fiddle 中正常工作。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com