动态增加Javascript对象成员
Increment Javascript object member dynamically
本质上,我希望函数读取字符串中的所有字母,并为每个字母吐出一个包含{'letter', 'count'}
属性的对象。
function freqLetters(string) {
var freq = [];
for (var i = 0; i < string.length; i++) {
var character = string.charAt(i);
if (typeof freq[character] != undefined) {
freq[character].count++;
} else {
freq.push({'letter': character, 'count': 1});
}
}
return freq;
}
然而,freq通常看起来是空的,当它工作时,它似乎总是无法通过'!=== undefined'
检查并推送计数为1的重复字母,而不是找到它们并递增它们。
typeof freq[character] !=== undefined]
检查是否正确?
我究竟是如何增加动态元素的?
(即,如果存在,则查找字母:a,如果存在则将其计数增加1)
函数式编程。
var counts = string
.split('') // Get individual letters.
.reduce((acc, letter)=> {
// acc is an object (passed in as second arg to reduce).
// we use the existing value for the letter (default to 0) and add one each time.
acc[letter] = (acc[letter] || 0) + 1
return acc
}, {})
编辑:意识到您想要一个数组或{letter:count}个对象。
var countsList = Object
.keys(counts)
.map((key)=> ({ [key]: counts[key] }))
如果您想检查字母的存在,不要使用数组对象。因为push函数添加了由数字(0,1,2)索引的元素,所以freq[character]总是未定义的。
对于您的报喜:
var freq = {};
在您的其他:
freq[character] = {'letter': character, 'count': 1}
在你的if中,检查一下是否存在:
if (freq[character]) {... }
您可以使用以下代码:
function countCharacters(exampleString){
var countObject = {} ;
for (var i = 0, l = exampleString.length; i < l; i++) {
var currentChar = exampleString.charAt(i);
if(typeof(currentChar) != undefined) {
countObject[currentChar] = characterCount(exampleString, currentChar);
}
}
console.log(countObject);
return(countObject); }
function characterCount(word, character) {
var count = 0;
for (var i = 0; i < word.length; i++) {
if (word[i] === character) {
count++;
}
}
return count; }
希望有帮助:)
相关文章:
- 如何将从XML读取的值存储到本地对象's成员使用.get()函数
- Javascript映射对象成员以返回新的扁平对象
- 如何访问对象's成员通过另一种方法填充的方法
- 我需要使用什么语法来向一个对象的成员添加一个临时数组,该成员等同于一个字符串的通用列表
- CakePHP错误:在非对象上调用成员函数get(),使用cakejavascript助手时出错
- JavaScript 对象中的私有成员,带有 getter 和 setter
- 对象'未设置的数据成员值
- 控制台返回[Object-Object]而不是对象成员
- 为什么可以在内部函数成员中访问对象引用,而不能在内部属性成员中访问
- 从JavaScript对象访问数据's数组成员变量
- 对象属性不是在工厂成员函数内部创建的
- 在 JavaScript 中,如何有条件地向对象添加成员
- 如何在 Javascript 中将函数绑定到对象数据成员的更改
- 为什么在访问一个新对象的成员之前将其括在括号中
- console.log表示,当我调用对象的任何成员时,对象都是未定义的
- 如何使用正则表达式查找对象成员名称
- 如何向对象添加函数并引用其成员
- 访问javascript中对象类型的数组成员
- 在对象内部使用 for-in 循环来访问其成员
- 如何使用 Object.create() 而不是 new 创建具有私有成员的对象