SOURCE

const fontSize = 12
const boxWidth = 200
const limitLength = Math.floor(boxWidth / fontSize)

// 第1个就超出,即全都超出
const texts1 = [
    '12345644444555555',
    '123456',
    '12345644444',
    '1234564444455555',
    '123456444455',
    '12345645555'
]

// 大于1个的超出
const texts2 = [
    '123456',
    '12345644444',
    '12345644444555555',
    '1234564444455555',
    '123456444455',
    '1234564444455555',
    '1234564445555',
    '12345645555'
];

// 全都未超出
const texts3 = [
    '123456',
    '12345644444',
    '1234564445555',
    '12345645555'
];

// 1. 找到首个大于limit的索引,后面的都舍弃
function getShowTexts(list) {
    const firstExceedIndex = list.findIndex(({ length }) => length > limitLength)
    if (firstExceedIndex === -1) return list
    return list.slice(0, firstExceedIndex + 1)
}

// 2. 循环拼接
function render(list) {
    let str = ''
    list.forEach((item, index) => {
        str += `<p class=${index === (list.length - 1) && item.length > limitLength ? "multi-lines-text lines-1" : ''}>${item} ---【${index}】</p>`
    })
    return str
}

console.log('第一组==>', render(getShowTexts(texts1)))
console.log('第二组==>', render(getShowTexts(texts2)))
console.log('第三组==>', render(getShowTexts(texts3)))
console 命令行工具 X clear

                    
>
console