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

Смежные вопросы