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

JavaScript如何匹配关键词后收集连续数字生成指定结构对象数组

问题分析

原代码仅收集了匹配关键词后的连续数字,没有记录数字对应的关键词,也没有按照要求的结构存储数据。

修改思路
  • 提前初始化一个结果对象,用于存储「关键词: 对应连续数字数组」的键值对
  • 每次匹配到words中的关键词时,先创建一个空的临时数组存放后续的连续数字
  • 遍历完该关键词后的所有连续数字后,判断临时数组是否非空,只有非空的情况下才将关键词和临时数组存入结果对象
  • 最后将结果对象包裹进数组,得到要求的输出格式
修改后代码
const words = ['blue' , 'red' , 'yellow' , 'grin' , 'black' , 'white'];
const text = ['xxx'  , 'yyy' , 'red' , 'zzz' , 'black' , 65 , 54 , 'white' , 'aaa' , 'yellow' , 50, 'ppp'];

const wordSet = new Set(words);
// 初始化存储键值对的对象
const resObj = {};

for (let i = 0; i < text.length; i++) {
  const current = text[i];
  if (wordSet.has(current)) {
    const nums = [];
    // 收集后续连续数字,加边界判断避免数组越界
    while (i + 1 < text.length && typeof text[i + 1] === 'number') {
      nums.push(text[++i]);
    }
    // 只有存在数字的关键词才存入结果对象
    if (nums.length > 0) {
      resObj[current] = nums;
    }
  }
}
// 按要求把对象放入数组返回
const result = [resObj];
console.log(result);
// 输出: [ { black: [ 65, 54 ], yellow: [ 50 ] } ]
逻辑说明
  • 新增了数组边界判断,避免关键词出现在数组末尾时访问i+1越界报错
  • 仅当关键词后有连续数字时才存入结果,所以示例中red、white等后面没有数字的关键词不会被计入
  • 最终输出完全符合要求的数组包裹对象的结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:39:04