[英]Adding an element to an object in a for loop
我想用一个字符串的运行长度编码填充一个对象。 使用数组通常很简单,但我不太清楚如何处理对象。
function addto (string) {
var string = string.split("").sort();
var cnt = 1;
var obj = {};
for (i = 0; i < string.length; i ++) {
if (string[i] === string[i+1])
cnt++;
}
return obj;
}
addto("abbccc");
现在显然我不能在这里使用像push()这样的方法。 但我也不能将对象名称设置为我喜欢的位置的字符串:
obj.string[i] = cnt;
这是我最初希望做的。 有没有一种正确的方法来做到这一点,我的输出将是(给出的例子):
{"a":1, "b":2, "c":3}
对于字符串中的每个字符,您希望将该字符的obj
计数器递增一次。 这是向正确的方向发展。
var obj = {};
for (i = 0; i < string.length; i ++) {
// If the character has not been seen yet, set its counter to 0.
obj[string[i]] = obj[string[i]] || 0;
// Increment that character's count once.
obj[string[i]]++;
}
请注意,使用此方向,您无需事先对数组进行排序。
这是另一种选择。 如果你这样做是作为课程作业,那么不要使用它。 但作为一项心理练习,我留下了解决方案:
var str = "abbccccddeeeeefgh"
var matches = str.match(/(.)\1*/g);
// matches = ["a", "bb", "cccc", "dd", "eeeee", "f", "g", "h"]
var counts = {};
for (i in matches)
counts[matches[i][0]] = matches[i].length;
// counts = Object {a: 1, b: 2, c: 4, d: 2, e: 5, f: 1, g: 1, h: 1}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.