排序数组中的常见值段

时间:2016-04-27 15:20:37

标签: javascript arrays underscore.js

我想计算已经排序的数组中的公共段:

考虑以下两个数组:

var arr1 = ['a','b','c','d'];
var arr2 = ['a','c','d'];

我想返回['a'],['b'],['c','d']

这不是典型的交集,维持数组值的顺序至关重要。

使用下划线有一种简单的方法吗?

1 个答案:

答案 0 :(得分:0)

据推测,这对您有用,至少对于给定的数据。

var arr1 = ['a', 'b', 'c', 'd'],
    arr2 = ['a', 'c', 'd'],
    arr3 = [];

arr1.forEach(function (a, i) {
    if (!i || this.next) {
        arr3.push([a]);
        if (a === arr2[this.index]) {
            this.index++;
        }
        this.next = false;
        return;
    }
    if (a < arr2[this.index]) {
        arr3.push([a]);
        this.next = true;
        return;
    }
    if (a === arr2[this.index]) {
        arr3[arr3.length - 1].push(a);
        this.index++;
    }
}, { index: 0, next: false });

document.write('<pre>' + JSON.stringify(arr3, 0, 4) + '</pre>');