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

如何更简洁地从对象数组中提取格式化后的数字数组?

优化方案

可以利用正则精准匹配目标数字,简化链式调用流程,以下是两种更简洁的实现:

方案一:使用flatMap+正则匹配

const numArray = objArray.flatMap(item => {
  // 匹配所有{{数字}}格式的内容,提取数字部分
  const matches = item.relatedId.match(/{{(\d+)}}/g);
  return matches ? matches.map(m => Number(m.replace(/[{}]/g, ''))) : [];
});

console.log(numArray);

方案二:使用matchAll直接捕获数字组

const numArray = [].concat(...objArray.map(item => 
  [...(item.relatedId.matchAll(/{{(\d+)}}/g) || [])].map(m => +m[1])
));

console.log(numArray);

优势说明

  • 精准匹配目标格式:通过/{{(\d+)}}/g直接定位被{{}}包裹的数字,避免处理无关字符
  • 减少中间操作:用flatMap或数组展开合并,省去多次map、filter、flat的链式调用,减少中间数组生成,性能更优
  • 逻辑更清晰:直接围绕目标数字提取逻辑编写代码,可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:50:25