如何使用' in' Javascript中的关键字

时间:2017-11-13 14:20:39

标签: javascript

我在这里有一个问题。我知道我的代码有很多问题,我需要你的帮助。 问题是,返回一个具有字符串重复信息数的对象。 给定的字符串是

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);

2 个答案:

答案 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中循环。