Bagaimana nilai objek javascript yang berupa string ini dapat diubah menjadi array, menghapus tanda kutip luar, hanya menyisakan tanda kurung? Upaya menggunakan obj["text-font"] = obj["text-font"].split('"').join(""); tidak berhasil.

Arus

text-font: "['Open Sans Regular', 'Arial Unicode MS Regular']"

Dimaksudkan

text-font: ['Open Sans Regular', 'Arial Unicode MS Regular']
0
ckingchris 28 Mei 2021, 22:51

3 jawaban

Jawaban Terbaik

Jika Anda tahu tidak ada tanda kutip lain dalam string selain yang membatasi nama font, Anda dapat mengonversinya menjadi tanda kutip ganda dan kemudian menggunakan JSON.parse() untuk mengubahnya menjadi array.

obj['text-font'] = JSON.parse(obj['text-font'].replace(/'/g, '"'));
5
Barmar 28 Mei 2021, 19:56

Mungkin gunakan eval() ** waspadai masalah keamanan, lihat di bawah

let obj = {
  "text-font": "['Open Sans Regular', 'Arial Unicode MS Regular']"
}

console.log(eval(obj['text-font']))

// to fix the object

obj['text-font'] = eval(obj['text-font']);
console.log(obj)

eval() memiliki risiko keamanan dan pengguna jahat dapat menggunakan debugger dalam browser untuk mengeksekusi memiliki javascript melalui serangan XSS - saran umum untuk tidak menggunakan itu sembarangan.

1
Kinglish 28 Mei 2021, 20:10

Anda dapat mengganti tanda kutip tunggal dengan tanda kutip ganda dan kemudian menggunakan JSON.parse() untuk mengubahnya menjadi Array String yang sebenarnya.

obj["text-font"] = JSON.parse(obj["text-font"].replaceAll("'",'"'))

Lihat di sini untuk informasi lebih lanjut: MDN Web Documents: JSON.parse()

3
maweil 28 Mei 2021, 20:02