Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代和比较JS对象中的值?_Javascript_Arrays_Object_Counter_Frequency - Fatal编程技术网

Javascript 如何迭代和比较JS对象中的值?

Javascript 如何迭代和比较JS对象中的值?,javascript,arrays,object,counter,frequency,Javascript,Arrays,Object,Counter,Frequency,结果应该是一个2元素数组,其中2个数字是最常见的;我可以返回一个数字被发现次数最多的前2名(我的//评论)。但是我不知道如何从出现次数最多的pairs对象返回正确的键。请帮忙 /*MajorityElementTop2 *编写一个函数,该函数接受一个整数数组并返回一个新的两项数组 *输入中出现频率最高的两个整数。 *多数元素top2([3,3,1,2,1,1,4,4,4]);//[4,1] */ 函数多数元素top2(数组){ 让结果=[]; 让配对={}; for(设i=0;i0;i--){

结果应该是一个2元素数组,其中2个数字是最常见的;我可以返回一个数字被发现次数最多的前2名(我的//评论)。但是我不知道如何从出现次数最多的pairs对象返回正确的键。请帮忙

/*MajorityElementTop2
*编写一个函数,该函数接受一个整数数组并返回一个新的两项数组
*输入中出现频率最高的两个整数。
*多数元素top2([3,3,1,2,1,1,4,4,4]);//[4,1]
*/
函数多数元素top2(数组){
让结果=[];
让配对={};
for(设i=0;i0;i--){
//设num=obj.pop();
//console.log(num);
//结果:推送(num);
//  }
//返回结果切片(0,2);
}

log(majorityElementTopTwo([3,3,1,2,1,1,4,4]);//[4,1]
从JavaScript开始,您可以使用Object.keys(obj)获取在对象本身上定义的属性数组(对于obj.hasOwnProperty(key)返回true的属性)

这比使用for-in循环更好(也更可读)

以下浏览器支持它:

火狐(壁虎):4(2.0) 铬:5 Internet Explorer:9


参考:

我希望这就是你想要的答案,我在这里所做的就是

  • 首先将所有条目映射为一个数组,即:
    [[“1”,3],“2”,1],“3”,2],“4”,4]
  • 然后根据第二个元素(元素出现的次数)对其进行排序
  • 然后将最常出现的前两个元素切片
    [[“4”,4],“1”,3]]
  • /*MajorityElementTop2
    *编写一个函数,该函数接受一个整数数组并返回一个新的两项数组
    *输入中出现频率最高的两个整数。
    *多数元素top2([3,3,1,2,1,1,4,4,4]);//[4,1]
    */
    函数多数元素top2(数组){
    让配对={};
    for(设i=0;ielements.sort((a,b)=>b[1]-a[1]).slice(0,2)
    }
    
    log(majorityElementTopTwo([3,3,1,2,1,1,4,4]);//[4,1]
    使用
    Array.prototype.map()、Array.prototype.filter()和Array.prototype.sort()。

    /*MajorityElementTop2
    *编写一个函数,该函数接受一个整数数组并返回一个新的两项数组
    *输入中出现频率最高的两个整数。
    *多数元素top2([3,3,1,2,1,1,4,4,4]);//[4,1]
    */
    函数多数元素top2(数组){
    常量[第一,第二]=[…新集合(数组)]
    .map((num)=>num,array.filter((n)=>n==num.length])
    .sort((a,b)=>b[1]-a[1])
    .切片(0,2);
    返回[第一个[0],第二个[0]];
    }
    log(majorityElementTopTwo([3,3,1,2,1,1,4,4])
    
    Object.keys(obj).forEach(function(key,index) {
        // key: the name of the object key
        // index: the ordinal position of the key within the object 
    });