【发布时间】:2019-03-01 19:01:15
【问题描述】:
我有一个来自 d3js 树形图的数组,在每个节点上使用 node.path(target)
var arr = [[{data: A},{data: B},{data: C}],
[{data: C},{data: B},{data: A}],
[{data: B},{data: D},{data: A}],
[{data: A},{data: D},{data: B}]
]
我想过滤数组以删除反向路径,即 [{data: C},{data: B},{data: A}] 是 [{data: A},{data: B},{data: C}] 的反向,所以应该只保留 [{data: A},{data: B},{data: C}]。
因此最终数组应如下所示:
var finalarr = [[{data: A},{data: B},{data: C}],
[{data: B},{data: D},{data: A}],
]
我试过做一个简单的反向比较。
function removereversepaths(arr){
var cleanpaths = [];
arr.forEach((a) => {
var arev = [...a].reverse();
if (!cleanpaths.includes(arev)){
cleanpaths.push(a);
}
});
}
我想知道是否可以编写一个过滤器函数来执行此操作,但由于某种原因,我在如何检查过滤器函数中的新数组以获取反向数组时画了一个空白。 任何帮助/方向表示赞赏。提前致谢。
【问题讨论】:
-
对象中是否只有一个属性?
-
你能展示一个真实或混淆数据的例子吗?
{data: X}的结构应该有助于我们提供答案。 -
@Barthy 的数据实际上就像
[{data: A, value: '123'},{data: B, value: '213'},{data: C, value: '530'}]例如。我简化了它,因为我只需要按data字段进行过滤。
标签: javascript arrays d3.js