温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Conditionally join some of an array's items in JavaScript
javascript

其他 - 有条件地在JavaScript中加入数组中的某些项目

发布于 2020-03-31 23:36:09

假设我有两个长度相同的数组:

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],但它不是连续的,因此未与后者中的任何一个连接。

查看更多

提问者
Theo Avoyne
被浏览
9
Nina Scholz 2020-01-31 19:56

只需检查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);