首页 > 解决方案 > 如何动态拆分数组?

问题描述

我有一个字符串数组,有点像这样:

["x", "foo", "y", "bar", "baz", "z", "0"]

而且我需要为每个 X、Y 和 Z 或其他特殊关键字拆分数组。

我试过用 拆分数组[x,y,z].split(y),但我很确定split()只用于字符串。

关键字(xyz)必须是数组中的第一个关键字。我怎样才能做到这一点?

这就是我想要得到的:

[
    ["x", "foo"],
    ["y", "bar", "baz"],
    ["z", "0"]
]

标签: javascriptarrayssplit

解决方案


您可以在键字符串的索引上使用一个数组和一个闭包,如果找到一个键,则推送一个空数组。

var array = ["x", "foo", "y", "bar", "baz", "z", "0"],
    keys = ["x", "y", "z"],
    result = array.reduce((i => (r, s) => {
        if (s === keys[i]) {
            r.push([]);
            i++;
        }
        r[r.length - 1].push(s);
        return r;
    })(0), []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读