[英]How do I turn a string into not being a string?
如果我在 js 中有一個數組:
['{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}']
我如何使值不是字符串。 例如,它們應該如下所示:
[{lat:52.5159, lng:13.3777}, {lat:37.773972, lng:-122.431297}, {lat:39.916668, lng:116.383331}]
這可能嗎? 如果是這樣,我該怎么做?
因為這些不是 JSON 字符串,所以您無法解析它們。
使用正則表達式查找數字,然后在數組上查找map
。 在每次迭代中匹配數字,然后返回 object 確保將字符串強制轉換為數字。
const arr = [ '{lat:52.5159, lng:13.3777}', '{lat:37.773972, lng:-122.431297}', '{lat:39.916668, lng:116.383331}' ]; const re = /-?[\d]+\.[\d]+/g; const out = arr.map(str => { const [ lat, lng ] = str.match(re); return { lat: +lat, lng: +lng }; }); console.log(out);
所以看起來您想將數組中的字符串解析為對象。 對於您帖子中的字符串,它們不會輕易轉換為 object,因為它們不是正確的 JSON。 如果初始數組的格式如下:
['{"lat":52.5159, "lng":13.3777}', '{"lat":37.773972, "lng":-122.431297}', '{"lat":39.916668, "lng":116.383331}']
從這里我們可以簡單地做一個數組 map 來從字符串中獲取對象:
var input = ['{"lat":52.5159, "lng":13.3777}', '{"lat":37.773972, "lng":-122.431297}', '{"lat":39.916668, "lng":116.383331}']
input = input.map(value => JSON.parse(value));
這將使輸入看起來像這樣:
[{lat:52.5159, lng:13.3777}, {lat:37.773972, lng:-122.431297}, {lat:39.916668, lng:116.383331}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.