Array.toString() returns 数组而不是字符串 - 为什么? Javascript

Array.toString() returns array instead of string - Why? Javascript

我一直在使用一个函数将不同的字符串转换为 snake_case。当我尝试使用 Array.toString() 将最终数组转换为字符串时,该函数仍然是 returns 一个数组。例如,尝试识别(标点符号)。为什么 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

你的代码应该没问题。例如,

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.toString();

如果你安慰它,你会看到这样的结果Banana,Orange,Apple,Mango

但如果您想替换逗号 (,) 并将其替换为空白 space

假设,

var punctuated = "Banana,Orange,Apple,Mango"
punctuated.split(",").join(" ");

结果会是Banana Orange Apple Mango

要了解有关从字符串替换的更多信息,您可以按照此 link