从Google Sheet获取的字符串数组无法提取city属性的求助
处理Google Sheet提取的字符串数组,提取City数据
解决步骤
- 过滤数组中的空字符串,避免无效处理
- 将字符串中的单引号替换为双引号(满足JSON格式解析要求)
- 解析处理后的字符串为JSON对象,提取
city字段 - 增加异常处理,防止解析失败导致流程中断
完整代码示例
const array = ["[{'city': 'new york', 'state': 'ny'}]", "[{'city': 'dallas', 'state': 'tx'}]", "","[{'city': 'los angeles', 'state': 'ca'}]"]; const cities = array .filter(item => item.trim() !== '') // 筛掉空字符串 .map(item => { try { // 替换单引号为双引号,解析成数组后取第一个对象 const targetObj = JSON.parse(item.replace(/'/g, '"'))[0]; return targetObj.city; } catch (err) { // 捕获解析错误,避免流程中断,同时输出错误信息方便排查 console.error('解析失败:', item, err); return null; } }) .filter(city => city !== null); // 过滤解析失败的无效结果 console.log(cities); // 输出: ["new york", "dallas", "los angeles"]
细节说明
- 单引号替换:
JSON.parse仅支持双引号格式的JSON字符串,所以必须把Google Sheet导出的单引号替换为双引号,否则会解析报错。 - 异常捕获:如果遇到格式异常的字符串(比如缺失引号、结构错误),
try/catch可以保证整个处理流程不中断,同时记录错误信息便于后续排查问题。 - 空值过滤:无论是原始的空字符串还是解析失败返回的
null,最终都过滤掉,确保结果数组只包含有效的城市名称。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

