2015-10-03 65 views
1

我想知道每个字母在'输入'变量中出现多少次。为此,我循环遍历每个角色并将它们存储在一个对象中,以及它们在句子中出现的次数。但它是安慰NaN。请告诉我错误在哪里?如何在javascript中的对象中动态添加属性?

var input = "why this kolaveri kolaveri di"; 
function processData(input) { 
    var object = {}; 
    input.replace(/\s/g,"").split("").forEach(function(item){ 
     object[item] == 'undefined' ? object[item] = 0 && object[item]++ : object[item]++ ; 
    }); 
    console.log(object); 
} 
+0

对于初学者来说,'对象[项目] ==“undefined''需要是'对象[项目] == undefined'在'undefined'周围没有引号,用'==='使用'object [item] === undefined'会更好,所以没有类型转换。虽然,我个人会自己使用'object.hasOwnProperty(item)'。 – jfriend00

回答

1

您可以使用hasOwnProperty来检查属性是否存在。

var input = "why this kolaveri kolaveri di"; 
 

 

 
var object = {}; 
 
input.replace(/\s/g,"").split("").forEach(function(item){ 
 
    
 
    // If the property doesn't exist, initialize it to 0 
 
    if (!object.hasOwnProperty(item)) 
 
    object[item] = 0; 
 
    
 
    object[item]++ 
 
}); 
 
console.log(object); 
 

为仇敌,你可以初始化到1,只有增量的人。基本上相同,但几个周期更有效。使用你认为最好的一个。

// If the property doesn't exist, initialize it to 1 
    if (!object.hasOwnProperty(item)) 
    object[item] = 1; 
    else 
    object[item]++; 
0

这项工作

typeof object[item] == 'undefined' ? 
0

您在下面的一行代码有问题。

object[item] == 'undefined' ? object[item] = 0 && object[item]++ : object[item]++ ; 

更新代码:

var input = "why this kolaveri kolaveri di"; 
 
function processData(input) { 
 
    var object = {}; 
 
    input.replace(/\s/g,"").split("").forEach(function(item){ 
 
     if(object[item] == null) 
 
     { 
 
      object[item] = 0; 
 
      object[item]++; 
 
     }else{ 
 
      object[item]++; 
 
     } 
 
    }); 
 
    console.log(object); 
 
} 
 

 
//testing here 
 
processData(input);

相关问题