とりあえずのメモ

期待外れ

const text = '肉➡︎肉➡︎肉'

const result = Array.from(text)

result // (7) ['肉', '➡', '︎', '肉', '➡', '︎', '肉']

result.filter(item => item !== '') // (7) ['肉', '➡', '︎', '肉', '➡', '︎', '肉']

text.match(/./ug) // (7) ['肉', '➡', '︎', '肉', '➡', '︎', '肉']

対策

const seg = new Intl.Segmenter("ja", { granularity: "grapheme" })

const result = seg.segment(text)

Array.from(result)

// (5) [{…}, {…}, {…}, {…}, {…}]

// 0: {segment: '肉', index: 0, input: '肉➡︎肉➡︎肉'}

// 1: {segment: '➡︎', index: 1, input: '肉➡︎肉➡︎肉'}

// 2: {segment: '肉', index: 3, input: '肉➡︎肉➡︎肉'}

// 3: {segment: '➡︎', index: 4, input: '肉➡︎肉➡︎肉'}

// 4: {segment: '肉', index: 6, input: '肉➡︎肉➡︎肉'}

// length: 5