使用javascript计算重复的单词

使用javascript计算重复的单词,javascript,Javascript,我试图解决这个练习,但我有点卡住了,这就是我现在所拥有的,我试图迭代字符串,增加索引加上每个单词一个 “编写一个函数,使用计数执行基本字符串压缩 如果出现以下情况,则重复字符(如“aabcccaaa”)将变为“a2b1c5a3” 压缩后的字符串不会比原始字符串小,只是 “打印原件” 函数countWords(){ var word=“aabcccaaa”; var结果=”; var计数器=0; 对于(var i=0;i你有两件事要做 首先,将循环索引增加两次。从if语句中删除i++ 其次,您需

我试图解决这个练习,但我有点卡住了,这就是我现在所拥有的,我试图迭代字符串,增加索引加上每个单词一个

“编写一个函数,使用计数执行基本字符串压缩 如果出现以下情况,则重复字符(如“aabcccaaa”)将变为“a2b1c5a3” 压缩后的字符串不会比原始字符串小,只是 “打印原件”

函数countWords(){
var word=“aabcccaaa”;
var结果=”;
var计数器=0;

对于(var i=0;i你有两件事要做

首先,将循环索引增加两次。从
if
语句中删除
i++

其次,您需要将计数器初始化为1而不是0

这个代码似乎有效

<script>
function countWords()
    {
    var word = "aabcccccaaa";
    var result = "";
    var counter = 1;

    for(var i = 0; i <= word.length; i++) {
        if(word.substr(i, 1) === word.substr(i+1, 1)) {
            counter++;
        }
        else {
            result = result + word.substr(i, 1) + counter;
            counter = 1;
        }
    }

    console.log(result);

    if(result.length < word.length)
        console.log(result)
    else
        console.log(word);
}

countWords();
</script>

函数countWords()
{
var word=“aabcccaaa”;
var结果=”;
var计数器=1;

对于(var i=0;i你有两件事要做

首先,将循环索引增加两次。从
if
语句中删除
i++

其次,您需要将计数器初始化为1而不是0

这个代码似乎有效

<script>
function countWords()
    {
    var word = "aabcccccaaa";
    var result = "";
    var counter = 1;

    for(var i = 0; i <= word.length; i++) {
        if(word.substr(i, 1) === word.substr(i+1, 1)) {
            counter++;
        }
        else {
            result = result + word.substr(i, 1) + counter;
            counter = 1;
        }
    }

    console.log(result);

    if(result.length < word.length)
        console.log(result)
    else
        console.log(word);
}

countWords();
</script>

函数countWords()
{
var word=“aabcccaaa”;
var结果=”;
var计数器=1;
对于(var i=0;i
函数countChars(word){
如果(!word){
返回词;
}
var arr=字分割(“”);
var currentChar=arr[0];
var计数=1;
var压缩=”;
对于(变量i=1;iword.length){
返回词;
}
回波压缩;
}
console.log(countChars(“aabcccccaaa”);
函数countChars(word){
如果(!word){
返回词;
}
var arr=字分割(“”);
var currentChar=arr[0];
var计数=1;
var压缩=”;
对于(变量i=1;iword.length){
返回词;
}
回波压缩;
}

console.log(countChars(“aabcccccaaa”);
可以使用reduce函数完成:

let word = 'aabcccccaaa';
let chars = word.split('');
let counter = 1;
let occur = 0;

let result = chars.reduce(function(prevValue, currValue, index, array) {
  let isLastChar = array.length - 1 === index;

  if (prevValue.substr(prevValue.length - 1) !== currValue) {
    occur = counter;
    counter = 1;
    prevValue = prevValue + occur + currValue;
    return isLastChar ? prevValue + 1 : prevValue
  } else {
    counter++;
    return isLastChar ? prevValue + counter : prevValue;
  }
});

可以使用reduce功能完成此操作:

let word = 'aabcccccaaa';
let chars = word.split('');
let counter = 1;
let occur = 0;

let result = chars.reduce(function(prevValue, currValue, index, array) {
  let isLastChar = array.length - 1 === index;

  if (prevValue.substr(prevValue.length - 1) !== currValue) {
    occur = counter;
    counter = 1;
    prevValue = prevValue + occur + currValue;
    return isLastChar ? prevValue + 1 : prevValue
  } else {
    counter++;
    return isLastChar ? prevValue + counter : prevValue;
  }
});

您可以使用正则表达式、数组中的reduce和条件三元函数的强大功能

function compress(input) {
    var re = /(.)\1+|./gi;
    var match = input.match(re);
    var output = match.reduce(function (previousValue, currentValue) {
        return previousValue + (currentValue.charAt(0) + currentValue.length);
    }, "");
    output = (output.length < input.length) ? output : input;
    return output;
}
console.log(compress("aabcccccaaa"));
函数压缩(输入){
变量re=/()\1+|/gi;
变量匹配=输入。匹配(re);
var输出=匹配.reduce(函数(先前值、当前值){
返回previousValue+(currentValue.charAt(0)+currentValue.length);
}, "");
输出=(output.length
您可以使用Regex的强大功能,减少数组和条件三元数

function compress(input) {
    var re = /(.)\1+|./gi;
    var match = input.match(re);
    var output = match.reduce(function (previousValue, currentValue) {
        return previousValue + (currentValue.charAt(0) + currentValue.length);
    }, "");
    output = (output.length < input.length) ? output : input;
    return output;
}
console.log(compress("aabcccccaaa"));
函数压缩(输入){
变量re=/()\1+|/gi;
变量匹配=输入。匹配(re);
var输出=匹配.reduce(函数(先前值、当前值){
返回previousValue+(currentValue.charAt(0)+currentValue.length);
}, "");
输出=(output.length
这是您修复了这些错误的代码

  • 计数器
    0开始
    因此计数将减少1
  • 类似于
    1)
    ,每次将
    计数器设置回
    0
    ,而不是
    1
  • 在for循环内递增
    i
    ,因此跳过值
  • 函数countWords(){
    var word=“aabcccaaa”;
    var结果=”;
    var计数器=1;
    
    对于(var i=0;i这是您修复了这些错误的代码

  • 计数器
    0开始
    因此计数将减少1
  • 类似于
    1)
    ,每次将
    计数器设置回
    0
    ,而不是
    1
  • 在for循环内递增
    i
    ,因此跳过值
  • 函数countWords(){
    var word=“aabcccaaa”;
    var结果=”;
    var计数器=1;
    对于(var i=0;i
    
    var inputString=“Javascript”,
    searchChar,count=0;
    AccuranceRepeat(输入字符串);
    函数AccuranceRepeat(inputString){
    对于(变量i=0;i
    var inputString=“Javascript”,
    searchChar,count=0;
    AccuranceRepeat(输入字符串);
    函数AccuranceRepeat(inputString){
    对于(变量i=0;i} <代码>不是一个问题。定义你的问题。你的代码是如何工作的?你需要什么帮助?你可能会发现这有帮助:不是一个问题。定义你的问题。你的代码是如何工作的?什么标准?