我在这里有一个问题。我知道我的代码有很多问题,我需要你的帮助。 问题是,返回一个具有字符串重复信息数的对象。 给定的字符串是
var r = countFreq(["a", "b", "b", "c", "c", "c", "d"]);
,结果必须是
{"a":1, "b":2, "c":3, "d":1 }
by console.log(r);
我所知道的是,键(属性)必须是元素和值(属性的值)必须是重复的次数。 而且,我必须在'中使用'关键世界要解决这个问题。
Like,
if('property' in 'object') {
//...
}else {
//...
}
(如果没有属性初始化为1,如果有相同的属性,则每次添加1)
我非常感谢你的帮助。 (这篇文章可能有语法错误。我真的为此感到抱歉......)
function countFreq(array) {
var i;
for(i=0; i<array.length; i++)
{
if(array[i] in array)
{
return i += 1;
}else
{
return i = 1;
}
console.log(array[i]+": "+i+", ");
}
}
var r = countFreq(["a","b","c","c","c","d"]);
console.log(r);
答案 0 :(得分:2)
根据MDN - &#39; in&#39;如果指定的属性位于指定的对象或其原型链中,则operator返回true。 Prop是表示属性名称或数组索引的字符串或符号(非符号将被强制转换为字符串)。 对象是检查它(或其原型链)是否包含具有指定名称的属性。
所以在你的情况下,这取决于你的对象是什么?如果object是一个数组,则需要使用prop作为数组的属性。直到数组长度的所有索引值都将返回true。 MDN数组示例
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
0 in trees // returns true
3 in trees // returns true
6 in trees // returns false
'bay' in trees // returns false (you must specify the
// index number, not the value at that index)
'length' in trees // returns true (length is an Array property)
Symbol.iterator in trees // returns true (arrays are iterable, works only in ES2015+)
答案 1 :(得分:0)
我认为你误解了in
运算符。 In可以在2种情况下使用,作为布尔运算符来检查数组中是否存在索引,或者使用for循环迭代数组的索引。您正在使用它来直接检查数组中是否存在值,这是您无法做到的。此外,您在每次迭代后从函数返回,因此您将只获得1或0。
我认为您需要以下内容:
countFreq(array) {
var results = { a: 0, b: 0, c: 0, d: 0 };
for (var index in array) {
results[array[index]] ++;
}
return results;
}
现在,您可以在调用results[‘a’]
后使用countFreq
访问每个结果。我想你需要阅读return
并在JavaScript中循环。