JavaScript如何正确访问字符串元素数组并提取目标值
问题原因
当前定义的是一维字符串数组,并非嵌套二维数组:
array[0]获取到的是数组索引0位的完整字符串值:from 05:04 - to 09:41, train 342 SEK, wifi- JavaScript支持通过索引访问字符串的单个字符,因此
array[0][0]实际返回的是上述字符串的首字符f,不符合预期是正常表现。
正确取值方法
读取数组内已拆分的独立项
数组中已经拆分好的独立内容,直接通过对应索引访问即可:
- 读取行程时长/换乘信息:
array[1],返回"Restid 4:37 tim, 0 byten" - 读取价格数值:
array[4],返回"342" - 读取货币单位:
array[5],返回"SEK" - 读取票价类型:
array[6],返回"Företagspris" - 读取座位等级:
array[7],返回"2 klass, 2 klass Lugn, 1 klass" - 读取车次信息:
array[8],返回"Snabbtåg, X 2000, Tåg 522"
提取首项长字符串内的结构化内容
如果需要从array[0]的长字符串里提取出发时间、到达时间、wifi标识这类细分内容,需要先对字符串做分割或者正则匹配:
字符串拆分方式示例
const firstStr = array[0]; // 先按逗号拆分字符串为三个片段 const [timeSection, trainPriceSection, wifiTag] = firstStr.split(', '); // 拆分时间片段 const [fromText, toText] = timeSection.split(' - '); const departTime = fromText.slice(5); // 出发时间 "05:04" const arriveTime = toText.slice(3); // 到达时间 "09:41" const hasWifi = wifiTag === 'wifi'; // 判断是否配备wifi,返回true
正则匹配方式示例
const firstStr = array[0]; // 匹配起止时间 const timeRegResult = firstStr.match(/from (\d{2}:\d{2}) - to (\d{2}:\d{2})/); const departTime = timeRegResult[1]; // "05:04" const arriveTime = timeRegResult[2]; // "09:41" // 匹配字符串内标注的票价 const priceInFirstStr = firstStr.match(/train (\d+) SEK/)[1]; // "342"
内容的提问来源于stack exchange,提问作者Sudhir
相关产品推荐
相关产品推荐

