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

如何匹配元素值并收集数组中-p/--name后的连续元素

获取数组中指定标记后连续元素的实现

核心逻辑

针对匹配-p、--name两类标记、收集标记后所有连续非标记元素的需求,遍历过程中跟踪收集状态即可实现:

  • 先把需要匹配的标记存到集合里,方便快速判断命中
  • 遍历时如果碰到目标标记,就切换当前收集上下文到这个标记,初始化对应的存储数组
  • 碰到非标记元素时,如果当前处于收集上下文,就把元素存到对应标记的数组里
  • 碰到下一个标记时,自动结束上一个标记的收集,切换到新标记的收集流程

JavaScript 实现代码

function collectElementsAfterFlags(arr, flags) {
  const flagSet = new Set(flags);
  const collected = {};
  let activeFlag = null;

  for (const item of arr) {
    if (flagSet.has(item)) {
      activeFlag = item;
      collected[activeFlag] = [];
      continue;
    }
    if (activeFlag) {
      collected[activeFlag].push(item);
    }
  }
  return collected;
}

// 传入示例数组测试
const demoArr = ['-p', 'player', '1', '--name', 'player1', 'name'];
const result = collectElementsAfterFlags(demoArr, ['-p', '--name']);

运行结果

针对给出的示例数组,最终返回的结果结构如下:

{
  "-p": ["player", "1"],
  "--name": ["player1", "name"]
}

如果需要获取单个标记对应的后续元素,直接从返回结果中读取对应属性即可,比如读取-p后的元素就取result["-p"]。

这个逻辑是通用的,如果需要新增其他匹配标记,只要往传入的flags参数里加对应标记值就行,不需要修改核心逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:45:33