2016-04-12 2 views
-9

dizesinde kaç kez görüntülendiğini belirtmek için temel olarak, hangi karakterleri ve rastgele bir dizede görüntülenme sayısını özetleyen bir komut dosyasına ihtiyacım var. Caps örneğin, göz ardı etmek zorunda: h = 2, e = 2, l = 4, o = 2 HTML belgesinde basılmış:Dizgede

var myString = promt ("Type anything: "); //"hello Hello"; 

Sonuçta böyle bir şey olmalı.

myString.match().length numaralı telefonu kullanmayı denemeden çok başarılıyım. Ana problemim hangi karakterlerin iki kez kontrol edilip kontrol edilmemesini tanımlamaktır (örneğin: iki kez kontrol edilmeyen dizede iki "h" varsa).

+3

Bize göster bize şimdiye kadar ne denediniz, yardım edebiliriz. –

+1

Ayrıca, sorunuz açık değil. _ "' karakterleri iki kez kontrol etmemek (örneğin: iki kez kontrol etmek için iki "h" harfi varsa). "" _ Ama sonra örneğinizde iki "h" karakteriniz var ve her ikisini de sayıyorsunuz. – j08691

+2

Bu eğlenceli bir ev ödevi sorusu gibi görünüyor. Kodunuzun bir parçasından fazla yayınlamadığınız için bir dizi kullanmayı denediniz mi? –

cevap

0
var str = 'hello Hello'; 
var count = {}; 
str.split('').forEach(function(v) { 
    if (v === ' ') return; 
    v = v.toLowerCase(); 
    count[v] = count[v] ? count[v] + 1 : 1; 
}) 

console.log(count); 
0

Bu çözüm eski tarayıcılarda çalışmıyor arrow fonksiyonunu (standart ES2015) kullandığı geçici nesne

var o = {}; 
 

 
"hello Hello".toLowerCase() 
 
    .replace(/\s+/, '') 
 
    .split('') 
 
    .forEach(e => o[e] = ++o[e] || 1); 
 

 
document.write(JSON.stringify(o));

kullanabilirsiniz.

+1

Bunun yalnızca ES6'da çalıştığını unutmayın. * Bkz. * [Javascript'teki “=>” ifadesinin anlamı nedir? (Http://stackoverflow.com/a/24900924/2057919). Birçok tarayıcıda bulunan JavaScript sürümlerinde çalışmaz. (Ve tabii ki, gerçek bir çaba sarf etmediklerinde, insanların ödevlerini yapmak için kötü bir politikadır.) –