如何使用Underscore或JavaScript移除数组首尾的方括号
嘿,这个需求其实很好解决,不管用原生JavaScript还是Underscore都能快速实现,我给你整理了几个实用的方案:
方案1:JavaScript原生实现
这里有两种思路,你可以根据自己的场景选择:
思路A:遍历子数组拼接(推荐,更灵活)
如果你的输入是数组对象,可以先把每个子数组转成字符串,再用逗号加空格连接起来,完美匹配你要的格式:
const inputArr = [['moe', 30], ['larry', 40], ['curly', 50]]; // 双引号版本(JSON标准格式) const outputDoubleQuotes = inputArr.map(subArr => JSON.stringify(subArr)).join(', '); console.log(outputDoubleQuotes); // 输出: ["moe",30], ["larry",40], ["curly",50] // 如果想要单引号的格式,手动拼接即可 const outputSingleQuotes = inputArr.map(subArr => `['${subArr.join("', '")}']` ).join(', '); console.log(outputSingleQuotes); // 输出: ['moe', '30'], ['larry', '40'], ['curly', '50']
这种方法的好处是,即使数组里有特殊字符(比如引号、逗号),用JSON.stringify会自动转义,避免格式出错。
思路B:字符串切片法
如果已经把数组转成了完整的JSON字符串,直接去掉首尾的方括号就可以:
const inputArr = [['moe', 30], ['larry', 40], ['curly', 50]]; const fullStr = JSON.stringify(inputArr); const output = fullStr.slice(1, -1); // 默认输出是逗号后无空格,如果需要空格可以再加一步替换 const outputWithSpace = output.replace(/\],\[/g, '], ['); console.log(outputWithSpace); // 输出: ["moe",30], ["larry",40], ["curly",50]
方案2:Underscore.js实现
Underscore本质是封装了原生JS的工具函数,所以思路和原生类似,用_.map遍历处理每个子数组,再用join拼接:
const inputArr = [['moe', 30], ['larry', 40], ['curly', 50]]; // 双引号版本 const output = _.map(inputArr, JSON.stringify).join(', '); console.log(output); // 输出: ["moe",30], ["larry",40], ["curly",50] // 单引号版本 const outputSingleQuotes = _.map(inputArr, subArr => `['${_.join(subArr, "', '")}']` ).join(', ');
内容的提问来源于stack exchange,提问作者Ananth
相关产品推荐
相关产品推荐

