如何在JavaScript中去除字符串引号?Underscore _.object返回undefined问题
解决Underscore _.object调用返回undefined的问题
首先得指出你当前的核心问题:你把两个数组拼成了单个字符串传给_.object,但这个函数的设计是接收两个独立的数组参数(第一个是键数组,第二个是值数组),不是一个包含数组的字符串,这就是为什么你得到undefined的原因。
正确的用法分两种情况:
情况1:原始数据就是两个数组(非字符串形式)
直接把两个数组作为独立参数传入即可:
const names = ['moe', 'larry', 'curly']; const ages = [30, 40, 50]; const output = _.object(names, ages); // 输出结果:{ moe: 30, larry: 40, curly: 50 }
情况2:原始数据是字符串形式的数组拼接
如果你的输入确实是像"['moe', 'larry', 'curly'], [30, 40, 50]"这样的字符串,那得先把它转换成两个真实的数组,再传给_.object。这里不推荐用eval(有安全风险),更稳妥的方式是调整字符串格式后用JSON.parse解析:
const inputStr = "['moe', 'larry', 'curly'], [30, 40, 50]"; // 拆分字符串为两个数组的字符串片段,替换单引号为双引号(符合JSON规范) const [namePart, agePart] = inputStr.split('], ').map(part => { return part.replace(/'/g, '"') + ']'; }); // 解析为真实数组 const names = JSON.parse(namePart); const ages = JSON.parse(agePart); // 调用_.object const output = _.object(names, ages); // 输出结果:{ moe: 30, larry: 40, curly: 50 }
你之前尝试去除引号没效果,是因为没解决根本问题——参数类型不对,_.object根本不识别字符串形式的数组,必须传入真实的数组对象才行。
内容的提问来源于stack exchange,提问作者Ananth
相关产品推荐
相关产品推荐

