React中如何循环处理JS对象转录文本以使用map方法渲染组件
完全可以实现,你只需要批量遍历point数组处理转录文本即可,无需手动声明单个变量存储拆分结果。
注意异步逻辑优先级
你用的xml解析器parseString是异步回调方法,所有操作ress的逻辑必须放在回调内部执行,否则会出现ress为undefined的报错。
批量处理代码示例
parser.parseString(xmlToParse, function (err, result) { if (err) return console.error('xml解析失败', err); const ress = result; const regex = / (?=\w+:)/g; // 遍历所有point条目,批量拆分转录文本 const processedTranscripts = ress.ROOT.record[0].index[0].point.map(pointItem => { // 加可选链做容错,避免部分条目缺失字段导致报错 const rawTranscript = pointItem.partial_transcript?.[0] || ''; return { // 拆分后的转录片段 segments: rawTranscript.split(regex), // 同时可以把你渲染需要的其他字段一起带上 time: pointItem.time?.[0] || '', title: pointItem.title?.[0] || '' } }); // 拿到processedTranscripts后就可以存到React state里供渲染使用 // 比如setTranscripts(processedTranscripts) });
React 渲染示例
拿到处理好的数组后直接调用map方法渲染组件即可:
// 假设你已经把processedTranscripts存在state的transcripts字段里 return ( <div className="transcript-container"> {transcripts.map((item, index) => ( // 你的自定义转录组件 <TranscriptItem key={index} title={item.title} time={item.time} segments={item.segments} /> ))} </div> )
processedTranscripts数组的下标0、1、2、3对应你原来的ptr0、ptr1、ptr2、ptr3,也可以直接通过下标按需取用。
内容的提问来源于stack exchange,提问作者Muttarab Ahmad
相关产品推荐
相关产品推荐

