繁体   English   中英

在 JavaScript 中组合来自对象数组的继续值

[英]Combine continue values from array of objects in JavaScript

我的结果应该组合连续的标签,如果标签相同,那么我想将这些文本组合成一个。

所以,从下面输入我的输出应该是:

Speaker-2:Do you want the systems in English or en espanol
Speaker-1:Heinous Spaniel
Speaker-2:For English press one for Spanish press 2 in Espanol
Speaker-1:Choirs a horror Janeiro at e ends in the pro gun to sober Tuesday to enter but I will have email but if you a new window
Speaker-2:but I put one that's 1 or 2.0 press he only those

 const note = [ { text: 'do you want the systems in English or en espanol', tag: 2, }, { text: 'heinous Spaniel', tag: 1, }, { text: ' for English press one for Spanish press 2', tag: 2, }, { text: ' in Espanol', tag: 2, }, { text: ' choirs a horror Janeiro at e ends in the pro gun to sober Tuesday to enter', tag: 1, }, { text: ' but I will have email but if you a new window', tag: 1, }, { text: " but I put one that's 1 or 2.0 press he only those", tag: 2, }, ]; const ip = note .map((e, i) => { const chanel = e.tag; let te = e.text.trim(); const next = note[i - 1] ? note[i - 1].tag : 0; if (chanel === next) { te = `${note[i - 1].text.trim()} ${te}`; note[i - 1].text = te; note.splice(i, 1); } return { [`Speaker-${chanel}`]: te.charAt(0).toUpperCase() + te.slice(1), }; }) .filter(e => !!e); let strimged = JSON.stringify(ip) .replace(/[{}"]/g, '') .split(',') .join('\\n'); strimged = strimged.substring(1, strimged.length - 1); console.log(strimged);

Array.reduce() 就是你的答案。

 const note = [ { text: 'do you want the systems in English or en espanol', tag: 2, }, { text: 'heinous Spaniel', tag: 1, }, { text: ' for English press one for Spanish press 2', tag: 2, }, { text: ' in Espanol', tag: 2, }, { text: ' choirs a horror Janeiro at e ends in the pro gun to sober Tuesday to enter', tag: 1, }, { text: ' but I will have email but if you a new window', tag: 1, }, { text: " but I put one that's 1 or 2.0 press he only those", tag: 2, }, ]; let previous = 0; let result = note.reduce((total, item) => { if(item.tag === previous) { total += item.text; } else { total += `\\nSpeaker-${item.tag}: ` + item.text; previous = item.tag; } return total; }, ''); console.log(result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM