如何从JavaScript生成的Stats对象中提取各条目的数值并解决match报错问题
错误原因
你构造的{Stats:Object.fromEntries(['d'].map(s=>[s,teamsToPlay[0][s]]))}是对象类型,而match()是仅字符串类型支持的方法,对象调用不存在的方法自然会抛出该错误。
正确提取方式
场景1:单独提取单个字段的数值
不需要绕复杂写法,直接读取teamsToPlay对应的属性即可:
// 提取d字段 const d = teamsToPlay[0].d; // 提取score字段 const score = teamsToPlay[0].score;
场景2:一次性提取所有Stats对应字段的数值
先构造目标Stats对象,再用Object.values()获取所有值的数组:
// 构造目标Stats对象 const stats = Object.fromEntries(['score','count','w','l','d'].map(s=>[s,teamsToPlay[0][s]])); // 提取所有值到数组,结果为 [123, 22, 12, 10, 0] const statValues = Object.values(stats);
场景3:必须用正则匹配提取(仅特殊需求时使用)
先将对象转为JSON字符串再调用match():
const d = Number( JSON.stringify({Stats:Object.fromEntries(['d'].map(s=>[s,teamsToPlay[0][s]]))}) .match(/\d+/)[0] );
内容的提问来源于stack exchange,提问作者mrdoublelight221
相关产品推荐
相关产品推荐

