javascript - Array.toString() 返回数组而不是字符串 - 为什么?Javascript
问题描述
我一直在使用一个函数将不同的字符串转换为snake_case。当我尝试使用 Array.toString() 将最终数组转换为字符串时,该函数仍然返回一个数组。例如,尝试识别(标点符号)。为什么 underlinedStringNew 是数组而不是字符串?
最好的问候贝尼
let punctuated = ',Hello, World???'
function identify(input) {
let array = input.split("");
let smallArray = [];
let newestArray = [];
for (let i = 0; i < array.length; i++) {
smallArray[i] = array[i].toLowerCase();
}
for (let i = 0; i < array.length; i++) {
if (array[i] == "." && array[i + 1] == ".") {
return "WtfCase";
}
}
let underlinedString = input.replace(/[^A-z]/g, "_");
let smallUnderlinedArray = [];
let capitalizedLetters = [];
let underlinedArray = underlinedString.split("");
console.log("Underlined Array: " + underlinedArray);
for (let i = 0; i < underlinedArray.length; i++) {
smallUnderlinedArray[i] = underlinedArray[i].toLowerCase();
}
for (let i = 1; i < underlinedArray.length; i++) {
if (underlinedArray[i] !== smallUnderlinedArray[i]) {
capitalizedLetters.push(i);
};
};
for (let i = 0; i < capitalizedLetters.length; i++) {
underlinedArray.splice(capitalizedLetters[i], 0, "_");
}
let i = 0;
for (i; i < underlinedArray.length; i++) {
if (underlinedArray[i] == "_" && underlinedArray[i + 1] == "_") {
underlinedArray.splice(i, 1);
i = i - 1;
};
};
if (underlinedArray[underlinedArray.length - 1] == "_") {
underlinedArray.splice(underlinedArray.length - 1, 1);
}
if (underlinedArray[0] == "_") {
underlinedArray.splice(0, 1);
}
let underlinedStringNew = underlinedArray.toString();
console.log("Should be a string: " + underlinedStringNew);
};
解决方案
我认为您正在寻找的是在没有,
. 默认情况下,join
添加,
. 如果要删除它们,请使用空字符串''
。
// note that I simply a bit your code just to showcase the solution.
var a = ',Hello, World???'.replace(/[^A-z]/g, "_").split("").join('');
console.log("Should be a string: " + a);
输出:
Should be a string: _Hello__World___
如果您想了解更多信息join
,请查看MDN。一些例子:
var elements = ['Fire', 'Wind', 'Rain'];
console.log(elements.join());
// expected output: Fire,Wind,Rain
console.log(elements.join(''));
// expected output: FireWindRain
console.log(elements.join('-'));
// expected output: Fire-Wind-Rain
推荐阅读
- r - R sjplot:如何调整 X 轴标签的角度并将它们向下移动?
- java - 初始化电源设置为匿名接口
- python - 使用 apply() 自定义函数创建新列时出现 Pandas 内存错误
- javascript - 如何使用反应循环遍历数组并根据某些条件将其推送到单独的数组中?
- ios - 不确定如何为现有代码正确设置我的变量。致命错误:在隐式展开可选值时意外发现 nil
- javascript - 如何将元素的值与控制台中的每个组件分开
- stored-procedures - 使用 ssrs 中的输入参数执行 Hana 存储过程
- android - Android:在内部充气 RecyclerView 时,如何防止 Fragment 事务的延迟或动画跳过?
- javascript - 通过 javascript 更改正文颜色(覆盖)不起作用
- python - 如何在整个项目中共享一个类的实例?