javascript - 使用 underscore.js 查找基于双重属性的唯一值

标签 javascript underscore.js

使用 Underscore.js,我试图在如下所示的数组中获取唯一值:

var links = [
    {source: 0, target: 1},
    {source: 0, target: 2},
    {source: 0, target: 3},
    {source: 0, target: 4},
    {source: 0, target: 1},
    {source: 4, target: 0}
];

所以它最终是这样的:

var links = [
    {source: 0, target: 1},
    {source: 0, target: 2},
    {source: 0, target: 3},
    {source: 0, target: 4},
];

当然,我想删除具有相同顺序(0,1 == 0,1)的相同源和目标对的链接,但也想删除相同但倒置的链接( 0,4 == 4,0).

我确信我可以使用双嵌套的 _.map() 来做到这一点,但我想看看是否有任何 Underscore 魔术师有更干净、更合适的解决方案。

最佳答案

我认为 _.uniq 就是答案。

uniq_.uniq(array, [isSorted], [iteratee])

More info

我相信您可以使用第三个参数 (iteratee) 来提供在比较之前首先应用的自定义转换函数。

使用 _.uniq ( http://jsfiddle.net/muto6zs1/ ) 的示例:

function(item) {
  // sort array of source and target and join it into a delimited string for a unique value
  return [item.source, item.target].sort().join(',');
}

关于javascript - 使用 underscore.js 查找基于双重属性的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131666/

相关文章:

javascript - Vue标签下元素高度

javascript - underscore.js 如何为函数创建别名?

javascript - 在 Firefox 中使用 javascript 更改 div 的颜色

Javascript 插件在 WordPress 中附加重复数据

javascript - PHP 只获取循环的最后一个值

javascript - Node.js Express 将 Underscore.js 注册为 View 引擎的示例?

javascript - 主干 - 删除集合中的最后一个模型,但只能通过过滤器

javascript - 如何在 underscore.js 中的 _.each 循环的每次迭代中添加延迟?

javascript - 如何从字符串中删除列表短语?

javascript - safari 中的 websql 控制台专门用于在 iOS 中进行调试