所以我在最近的一个快速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
答案 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);
}
:)