Give Количество символов, накопленных в строке с использованием JavaScript - PullRequest
0 голосов
/ 21 сентября 2018

Это код, который я написал для подсчета

var name = "Interesting";
var letter_count = {};
 for(var i in name){
   if (!(i in letter_count)){
    letter_count[i] = 1;
   }
  else {
   letter_count[i] += 1;
  }
}
console.log(letter_count);

ожидаемый результат: { i: 2, n:2, t:2, e:2, r:1 s:1, g:1 }

Ответы [ 4 ]

0 голосов
/ 21 сентября 2018

Если вам нужен необычный подход к функциональному программированию:

const letterCount = name.toLowerCase().split('').reduce((acc, curr) => {
    acc[curr] ? acc[curr]++ : acc[curr] = 1;
    return acc;
}, {});

console.log(letterCount);

Документацию по функции сокращения можно найти здесь: ссылка

0 голосов
/ 21 сентября 2018

Переменная i в for...in представляет ключ (или индекс в случае массива).Поскольку вам не нужен индекс, используйте for...of вместо:

var name = "Interesting";
name = name.replace(/ +/g, "").toLowerCase();
// name = name.split('').join(''); // remove - this doesn't do anything
var letter_count = {}

for(var i of name){
   if (!(i in letter_count)){
    letter_count[i] = 1;
   }
  else {
   letter_count[i] += 1;
  }
}

console.log(letter_count);
0 голосов
/ 21 сентября 2018

В вашем коде есть пара ненужных и ошибочных вещей, и я помещаю их в комментарии внутри кода

var name = "Interesting";
// you do not need to do this name = name.replace(/ +/g, "").toLowerCase();
name = name.toLowerCase();
// nor this name = name.split('').join('');
var letter_count = {}

for(var i in name){
   var character = name[i]; // here we set the value of character to be letter from name
   if (!(character in letter_count)){
    letter_count[character] = 1; // here we are giving it initial value if it is not found so far
   }
  else {
   letter_count[character] += 1; // here we are giving it value if it already exists
  }
}

console.log(letter_count);
0 голосов
/ 21 сентября 2018

Я думаю, вы были немного озадачены тем, как использовать переменную i.На самом деле это индекс персонажа, а не персонажа.Чтобы получить персонажа, нужно использовать var c = name[i];

var name = "Interesting";
name = name.replace(/ +/g, "").toLowerCase();
name = name.split('').join('');
var letter_count = {}

for(var i in name){
   var c = name[i];
   if (!(c in letter_count)){
    letter_count[c] = 1;
   }
  else {
   letter_count[c] += 1;
  }
}

console.log(letter_count);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...