使用javascript

时间:2019-03-10 08:40:41

标签: javascript

我想使一个函数uniqueWordCount可以计算字符串(words.txt)中所有唯一的单词。返回答案后我应该可以得到答案,而我现在已经做了类似的事情:

let fs = require('fs');

function run() {
  let text = fs.readFileSync('./words.txt', 'utf8');
  return uniqueWordCount(text);
}

function uniqueWordCount(str) { 

  let count = 0;

  let set = new Set();

  let words = str.split (' ');

  for(let i = 1; 1 < words.length; i++){
    set.add(str[i]);
    count = set.size;
  }

  return uniqueWordCount;
}


module.exports.run = run; 

4 个答案:

答案 0 :(得分:2)

使用webview = ( WebView ) findViewById( R.id.webview );将字符串拆分为空格并将其设为集合。 Set将删除重复项。使用 String docc = "http://docs.google.com/gview?embedded=true&url="+yourURL; webview.getSettings().setJavaScriptEnabled( true ); webview.getSettings().setPluginState( WebSettings.PluginState.ON ); webview.loadUrl( docc );

返回集合的大小

split()

答案 1 :(得分:0)

符合ES5和ES6的解决方案可以是:

"aabc      adsd adsd hasd"
.split(/\b(?:\s+)?/)
.reduce(function(ac,d,i){!~ac.indexOf(d) && ac.push(d);return ac;},[]).length //return 3

答案 2 :(得分:-1)

Salary::where([
        ['year', '=', date('Y')],
        ['month', '<', date('m')]
    ])
    ->orWhere('year', '<', date('Y'))
    ->get()

答案 3 :(得分:-1)

要使uniqueWordCount函数正常工作,您需要进行以下4个更改:

  1. for-loop而不是let i = 0的{​​{1}}开始
  2. let i = 1将始终为true,从而创建无限循环。将1 < words.length替换为1-> i
  3. 在您的i < words.length访问权限for-loop中,不是words[i],因为str[i]是您的单词数组,words只是您的原始字符串。
  4. 您要返回的变量str是一个函数,但是您需要返回uniqueWordCount,该变量存储您的集合count

这是您的函数现在的外观:

size

注意:您可以并且很可能应该摆脱function uniqueWordCount(str) { let count = 0; let set = new Set(); let words = str.split (' '); // 1. replace 'let i = 1;' with 'let i = 0;' // 2. replace the second condition 1 < words.length with i < words.length for(let i = 1; i < words.length; i++){ // 3. replace 'str[i]' with 'words[i]' set.add(words[i]); count = set.size; } // 4. change 'uniqueWordCount' to 'count' return count; } 变量,而只需在函数末尾返回count。这样一来,您就可以避免在set.size的每次迭代中都更新count。不需要 进行此更改,但是会使您的函数更好。这是它的外观:

for-loop

一个最终的优化将类似于@ellipsis所提到的-在拆分function uniqueWordCount(str) { let set = new Set(); let words = str.split (' '); for(let i = 1; i < words.length; i++){ set.add(words[i]); } return set.size; } 字符串时立即创建一个Set。像这样:

str

注意:如果您希望不区分大小写地计算唯一单词,则可以立即在function uniqueWordCount(str) { // automatically populate your 'Set' let set = new Set(str.split (' ')); // immediately return your set's size return set.size; } 函数中执行str.toLowerCase()