使用 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])
我相信您可以使用第三个参数 (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/