2015-10-03 89 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);

相關問題