Javascript String.Split()方法给出字符串

Javascript String.Split() Method Giving Strings

本文关键字:字符串 方法 String Split Javascript      更新时间:2023-09-26

所以我有一个有趣的问题使用String.split()在谷歌Chrome浏览器在最近,快速的Javascript算法。我正在处理一个相当大的对象,我想要查看对象的每个键,检查它的质量,然后对键字符串的名称进行操作,如果它匹配(尝试为名称中的每个单词增加)。

下面的代码解释了错误,并假设存在cardData(在HTML中的单独脚本中声明的变量,相当于var cardData=(这里的Giant对象),特别是AllCards中的对象)。Json位于mtgjson.com

当我console.log name(或typeof name)时,它似乎返回一个逗号分隔的字符串,而不是一个实际的Javascript数组。这个错误会在只有3个数据集的备用选项卡中重现,使用相同的算法。我很想知道,到目前为止,是否有人看到了这个问题,或者是否有人有一些我在这个问题上可能遗漏的见解。谢谢!

示例输入和代码:

var cardData = {
    "Shivan Dragon": {
        "types": ["Creature"]
    }, 
    "Mimeoplasm": {
        "types": ["Creature"]
    }, 
    "This Is A Card Name": {
        "types": ["Creature"]
    }
};
var totalNameLength = 0;
var alreadyCheckedNames = {};
for (var key in cardData){
  if ((cardData[key]["types"] && cardData[key]["types"].indexOf("Creature") === -1) || (cardData[key]["supertypes"] && cardData[key]["supertypes"].indexOf("Legendary") !== -1)){
      delete cardData[key];
  } 
  else {
    if (!alreadyCheckedNames[key]){
      var name = String.prototype.split.call(key, " ");
      totalNameLength++;
      alreadyCheckedNames[key] = cardData[key];
      for (var i = 0; i < name.length; i++){
        if (name[i] === ","){
          totalNameLength++;
        }
      }
    console.log(name);
    }
  }
}
console.log(totalNameLength);

控制台输出示例:

<>之前Shivan,龙Mimeoplasm这一点,一个是卡,名字8

我想我找到问题了…这不起作用:

for (var key in cardData){
    var name = key.split(" ");
    console.log(name);
}

for (var key in cardData){
    var card_name = key.split(" ");
    console.log(card_name);
}

:)