使用javascript从多维数组中删除反向值

时间:2017-05-19 10:30:07

标签: javascript

我正在创建一个多维数组来绘制sankey图表。但它不支持循环值。所以我想删除一个数组,如果它是反向的oerder。例如: 如果我有一个名为

的数组
var myArray = [['aaa','20'],['bbb','30'],['ccc','40'],['30','bbb']] 

我想得到如下结果:

var myArray = [['aaa','20'],['bbb','30'],['ccc','40']]

2 个答案:

答案 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));

根据您认为合适的条件,随意操作过滤器。