我正在创建一个多维数组来绘制sankey图表。但它不支持循环值。所以我想删除一个数组,如果它是反向的oerder。例如: 如果我有一个名为
的数组var myArray = [['aaa','20'],['bbb','30'],['ccc','40'],['30','bbb']]
我想得到如下结果:
var myArray = [['aaa','20'],['bbb','30'],['ccc','40']]
答案 0 :(得分:1)
您可以通过检查数组的前任来过滤。
var array = [['aaa','20'],['bbb','30'],['ccc','40'],['30','bbb']],
result = array.filter(function (a, i, aa) {
return aa.slice(0, i).every(function (b) {
return a[0] !== b[1] || a[1] !== b[0];
});
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
对于任意数量的项目,您可以获取内部数组的副本,对其进行排序并获取其连接的字符串,并将其与哈希表进行比较。
var array = [["M", "A", 1], ["B", "G", 1], ["A", "M", 1], ["B", "C", 1]],
result = array.filter(function (hash) {
return function (a) {
var t = a.slice().sort().join('|');
return !hash[t] && (hash[t] = true);
};
}(Object.create(null)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
让我们假设您希望第一个值为字符串,第二个值为整数,您可以轻松过滤掉#34;向后"只需检查以确保第一个值不是整数:
function removeBackwardsArrays(values) {
return !parseInt(values[0]);
}
var values = [['aaa','20'],['bbb','30'],['ccc','40'],['30','bbb']];
console.log(values.filter(removeBackwardsArrays));
根据您认为合适的条件,随意操作过滤器。