javascript - lodash uniq - 选择要保留在对象数组中的重复对象

标签 javascript arrays unique lodash uniq

有什么方法可以根据非空的键来指定要保留的数组项。似乎 uniq 只保留第一次出现。

例如:

var fruits = [
{'fruit': 'apples', 'location': '', 'quality': 'bad'}, 
{'fruit': 'apples', 'location': 'kitchen', 'quality': 'good'}, 
{'fruit': 'pears', 'location': 'kitchen', 'quality': 'excellent'}, 
{'fruit': 'oranges', 'location': 'kitchen', 'quality': ''}
];


console.log(_.uniq(fruits, 'fruit'));


/* output is:

Object { fruit="apples",  quality="bad",  location=""}
Object { fruit="pears",  location="kitchen",  quality="excellent"}
Object { fruit="oranges",  location="kitchen",  quality=""}

*/

有没有办法告诉 lodash uniq 选择具有位置值的副本?它保留了坏苹果而不是好苹果。

~~~

我的最终解决方案是在 uniq 中使用 sortByOrder
console.log(_.uniq(_.sortByOrder(fruits, ['fruit','location'], ['asc','desc']),'fruit'))

导致:
Object { fruit="apples",  location="kitchen",  quality="good"}
Object { fruit="oranges",  location="kitchen",  quality=""}
Object { fruit="pears",  location="kitchen",  quality="excellent"}

最佳答案

从我在文档中看到的 https://lodash.com/docs#uniq没有办法指定。可能你想做的是一个 groupBy 水果,然后你可以选择你需要的质量。这取决于上下文以及您需要它的原因。

你能再解释一下你的问题吗?

关于javascript - lodash uniq - 选择要保留在对象数组中的重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34687586/

相关文章:

php - 获得最独特的结果,获得奇怪的..结果

javascript - 在Webpack中包含JS文件

javascript - 如何在 JavaScript 中使用嵌套数组作为特定键值创建新数组

javascript - 谷歌地图 : place ID array over 10 doesn't work

arrays - 尝试为 Azure ARM 模板创建动态依赖于数组

excel - 使用 UNIQUE 返回不同列的值

javascript - 在没有库或 getElementsByClassName 的情况下查找具有类的元素

javascript - 覆盖 twitter bootstrap 文本框发光和阴影

c - 将文本文件中的整数存储到整数数组中

php - 如何在 laravel 5.3 中忽略 laravel 多个唯一列中的软删除