我想计算已经排序的数组中的公共段:
考虑以下两个数组:
var arr1 = ['a','b','c','d'];
var arr2 = ['a','c','d'];
我想返回['a'],['b'],['c','d']
这不是典型的交集,维持数组值的顺序至关重要。
使用下划线有一种简单的方法吗?
答案 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>');