假设我有两个长度相同的数组:
const a = ['a', 'b', 'c', 'd'];
const b = [1, 1, 2, 1];
我想将(.join('')
)a
对应值b
(即在同一索引中)相等的所有连续项加入。
在这种情况下,我想得到的是:
const result = ['ab', 'c', 'd']
由于a[0]
和a[1]
在中b
(即b[0] === b[1]
)具有相同的对应值,并且在中具有连续值a
,因此它们被连接到同一字符串中,从而在中形成单个项result
。但是,尽管中a[3]
的对应值b
等于a[0]
和a[1]
,但它不是连续的,因此未与后者中的任何一个连接。
只需检查at的值b
是否与给定索引和后代相同。
const
a = ['a', 'b', 'c', 'd'];
b = [1, 1, 2, 1],
result = a.reduce((r, v, i) => {
if (b[i - 1] === b[i]) r[r.length - 1] += v;
else r.push(v);
return r;
}, []);
console.log(result);