You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何依据重复出现的键'a'拆分数组并生成新子数组

按指定键拆分JavaScript数组的解决方案

问题背景

给定如下JavaScript数组:

const test = [{a:1},{b:2},{c:3},{d:4},{a:5},{b:6},{c:7},{a:8},{c:9}]

需要实现:每当元素包含键'a'时,以此元素为起点拆分出一个新子数组,子数组的范围从该元素开始,直到下一个含'a'的元素之前(或数组末尾)结束。最终期望输出三个子数组:

[{a:1},{b:2},{c:3},{d:4}]
[{a:5},{b:6},{c:7}]
[{a:8},{c:9}]

解决方案代码

const test = [{a:1},{b:2},{c:3},{d:4},{a:5},{b:6},{c:7},{a:8},{c:9}];

const splitByKeyA = test.reduce((acc, current) => {
  // 遇到含'a'的元素就新建子数组
  if ('a' in current) {
    acc.push([current]);
  } else {
    // 非'a'元素追加到最后一个子数组
    acc[acc.length - 1].push(current);
  }
  return acc;
}, []);

// 打印结果验证
splitByKeyA.forEach(subArray => console.log(subArray));

思路说明

  1. 利用Array.prototype.reduce遍历原数组,初始化空数组作为存储拆分结果的容器。
  2. 遍历每个元素时,通过'a' in current判断当前元素是否包含目标键:
    • 若是,创建一个包含当前元素的新子数组并加入结果容器。
    • 若否,将当前元素添加到结果容器的最后一个子数组中。
  3. 遍历完成后,结果容器即为按要求拆分后的子数组集合。

内容的提问来源于stack exchange,提问作者Arun Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:33:20