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

时间:2016-08-18 17:20:41

标签: javascript string

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

下面的代码说明了错误,并假设存在cardData(在HTML中单独的脚本中声明的变量,相当于var cardData =(此处为Giant对象),特别是位于mtgjson的AllCards.json中的对象)。融为一体

当我在console.log中输入名称(或类型名称)时,它似乎返回一个逗号描述的字符串,而不是实际的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,Dragon
Mimeoplasm
This,Is,A,Card,Name
8

1 个答案:

答案 0 :(得分:0)

我想我发现了问题......这不起作用:

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);
}

:)