javascript - 如何动态拆分数组?
问题描述
我有一个字符串数组,有点像这样:
["x", "foo", "y", "bar", "baz", "z", "0"]
而且我需要为每个 X、Y 和 Z 或其他特殊关键字拆分数组。
我试过用 拆分数组[x,y,z].split(y)
,但我很确定split()
只用于字符串。
关键字(x、y和z)必须是数组中的第一个关键字。我怎样才能做到这一点?
这就是我想要得到的:
[
["x", "foo"],
["y", "bar", "baz"],
["z", "0"]
]
解决方案
您可以在键字符串的索引上使用一个数组和一个闭包,如果找到一个键,则推送一个空数组。
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; }
推荐阅读
- keras - 多类多标签数据的激活函数
- r - 拆分数据框,重新排列并保存为单独的 csv 文件
- django - 为 django 集成前端 js 框架 (Vue)
- flutter - 如何将 Stratless 小部件包含到 StatefulWidget 中?
- django - 重新创建容器时的 Bitbucket 管道 docker 卷权限
- swift - 是否可以在另一个协议的扩展内实现一个协议的功能?
- php - API 平台 - 数据持久化器 - 无法创建新用户
- mysql - 不同条件查询同一张SQL表的多个实例
- java - 运行 Java 应用程序什么都不做
- go - ProtoBuf 教程:“AddressBook 没有实现“github.com/gogo/protobuf/proto”.Message(ProtoMessage 方法有指针接收器)”