【问题标题】:String compression program not working [duplicate]字符串压缩程序不起作用[重复]
【发布时间】:2016-06-24 00:00:13
【问题描述】:

我正在尝试创建一个程序,将字符串压缩为它有多少个字符。只是为了让我的非编程朋友了解压缩的工作原理。

不幸的是,我似乎无法将相同的字母放入单个数组中,而将其他相同的字母集放入其他各自的数组中。

代码不完整,因为我的硬盘丢失了很多数据,而这就是我在 Google Drive 上备份的全部数据。谁能帮我解决这个问题?谢谢!

var string = "twinkle twinkle little star how i wonder what you are up above the world so high like a diamond in the sky twinkle twinkle little star"

var brokenString = string.split("")

var counter = 0;
for (i = 1; i < brokenString.length; i++) {
  while (brokenString[counter] === brokenString[i]) {
    //var eval("array" + counter) = new Array(brokenString[i])
    var array = {
      counter:  brokenString[i]
    }
  counter++
  }
}

console.log(array)

【问题讨论】:

  • 我不认为new Array(brokenString) 做你认为它做的事。它创建一个包含一个元素的新数组,该元素是brokenString 数组。
  • 实际上,直到该行的所有内容都完全按照我的预期工作。这是我无法工作的循环。它从原始string 的每个字符中创建一个元素,并将其放入一个名为brokenString 的数组中
  • 没关系,现在我看到您没有将new Array(brokenString) 分配给任何东西。那条线的目的是什么? brokenString 已经是一个数组,调用 new Array() 对它没有任何作用。
  • var array 的目的是什么?您正在创建该对象,但没有对它做任何事情。
  • 是的,我意识到new Array(brokenString) 没用。现在我也理解了你的第二条评论。谢谢你!

标签: javascript arrays oop compression


【解决方案1】:

使用一个对象,其键是字符,值是这些字符的计数。

var string = "twinkle twinkle little star how i wonder what you are up above the world so high like a diamond in the sky twinkle twinkle little star"

var letters = {};
for (var i = 0; i < string.length; i++) {
  var char = string[i];
  if (char in letters) {
    letters[char]++;
  } else {
    letters[char] = 1;
  }
}

console.log(letters);

【讨论】:

  • @Barmar 先生,非常感谢。很抱歉,您必须解决结构不正确的问题及其代码,但感谢您的帮助!如果我可能会问,是否有任何资源可以特别推荐给我,以便我可以在 JS 方面做得更好?我已经在codecademySoloLearn 进行了在线练习,这并没有真正教多少。非常感谢您在这件事上的投入。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
相关资源
最近更新 更多