javascript - 需要更好的解决方案/改进

标签 javascript

我有一个要求,比如:

给定一个数组,其中包含随机数。需要输出元素出现的次数,有自带解决方案:

var myArr = [3,2,1,2,3,1,4,5,4,6,7,7,9,1,123,0,123];

Array.prototype.showOccurences= function(){
    this.sort();
    var sorted={}, sortArr=[];
    for(var i=0; i<this.length; i++){

        if(this[i] === this[i + 1]){
            sortArr.push(this[i]);
            sorted[this[i]]= sortArr.length + 1;
        }else{
            sortArr=[];
            if(sorted[this[i]] === undefined){
                sorted[this[i]] = 1;
            }
        }    
    }
    return sorted;
}
console.log(myArr);
console.log(myArr.showOccurences());

Fiddle 我在这里想要的, 1. 这是否可以通过更好的解决方案进行改进,使用某种算法,如 hashmap

最佳答案

相同的较短版本:

Array.prototype.showOccurences= function(){
    var c=[];
    for(var i=0; i<this.length; i++)
        c[this[i]] = (!c[this[i]]) ? 1 : c[this[i]]+1;
    return c;
}

更新 fiddle :http://jsfiddle.net/afzLD/2/

关于javascript - 需要更好的解决方案/改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23556424/

相关文章:

javascript - 将一个对象插入数组会导致该对象中只有一个值

javascript - 在纯 JavaScript 中使用多个选择标签来过滤列表

javascript - 当并排 float 时,一个底部如何对齐两个 div?

javascript - 保存数据后单击按钮时显示警报消息 asp.net

javascript - 如何使单选按钮水平并带有填充

javascript - 组件挂载时 onClick 的函数触发

javascript - Angularjs ui-select 标记不起作用

javascript - 如何删除 casperjs 事件监听器

javascript - 使用 javascript 的 DOM 操作挂起 UI 线程

javascript - iOS 上的 Photoswipe 图库关闭事件