как вставить перенос строки в текст если он часть объекта

Рейтинг: 0Ответов: 2Опубликовано: 09.01.2023

есть вот такой объект

var ENParam = {  
    title: 'MAIN TECHNICAL CHARACTERISTICS',  
    importParamText: 'MAIN CHARACTERISTICS:',  
    Capacity: 'Capacity (t/h)',  
    Accuracy: 'Accuracy, (%)',  
    Voltage: 'Voltage / Frequency, (V/Hz)',  
    Power: 'Power, (KW)',  
    Weight:'Weight, (KG)'  
}  

и мне нужно что бы после присваивания текста ENParam.title блоку он в нем выглядел так:

'<div>MAIN</br>TECHNICAL</br>CHARACTERISTICS</div>'  

однако как этого добиться я не понимаю

Ответы

▲ 1

мне нужно что бы после присваивания текста ENParam.title блоку он в нем выглядел так

Если сделать свойство приватным. Дописать к нему геттер и сеттер. Можно такое осуществить.

https://learn.javascript.ru/property-accessors

const ENParam = {
  _title: null,
  importParamText: 'MAIN CHARACTERISTICS:',
  Capacity: 'Capacity (t/h)',
  Accuracy: 'Accuracy, (%)',
  Voltage: 'Voltage / Frequency, (V/Hz)',
  Power: 'Power, (KW)',
  Weight: 'Weight, (KG)'
}
Object.defineProperty(ENParam, 'title', {
  get() {return this._title},
  set(value) {
    this._title = '<div>' + value.split(' ').join('<br />') + '</div>'
  }
})
ENParam.title = 'MAIN TECHNICAL CHARACTERISTICS'
console.log(ENParam)

▲ -1

Этого можно добиться разными способами.

Используя регулярные выражения:

console.log('MAIN TECHNICAL CHARACTERISTICS'.replace(/\w+\s/g, m => m.replace(/\s+/g, '') + '<br>'))

Или же старые добрые циклы:

let str = 'MAIN TECHNICAL CHARACTERISTICS'
let result = ''

for (let i = 0; i < str.length; i++) {
  let char = str[i]

  result += char === ' ' ? '<br>' : char
}

console.log(result)

А можно и не старые добрые :)

let str = 'MAIN TECHNICAL CHARACTERISTICS'
let result = ''

for (char of str) {
  result += char === ' ' ? '<br>' : char
}

console.log(result)

В общем, способов куча, удивлён что вы не нашли не единого способа в итернете.