首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Javascript的计算模式

基于Javascript的计算模式
EN

Stack Overflow用户
提问于 2016-10-20 10:04:48
回答 3查看 1.4K关注 0票数 2

我有一些问题,如何实际得到我得到的地图的最大价值。现在,我的代码只显示每个键的实际计数值,我一直在尝试记录最大值,我认为在我的代码中发生的是for循环遍历countskey数组,但是它将保持在1,这是第一个值并停止,因为唯一记录的数字是1。我并不期待实际的答案,也许一些提示和提示会引导我找到正确的方法。提前谢谢。

代码语言:javascript
复制
var Mode = function(data) {
    var counts = {};
    for (let i = 0; i < data.length; i++) {
        counts[data[i]] = (counts[data[i]] + 1) || 1;
    }
    for (var key in counts) {
        if (counts.hasOwnProperty(key)) {
            var maxValue = Math.max(counts[key]);
        }
    }
    return maxValue;
}
console.log(Mode([1, 5, 2, 3, 3, 4, 4, 4]));

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-27 08:30:34

通过使用以下代码,我终于解决了这个问题:

代码语言:javascript
复制
var Mode = function(data) {
var counts = {};
for (let i = 0; i < data.length; i++) {
    counts[data[i]] = (counts[data[i]] || 0) + 1
}
var max = 0;
var values = [];
for (var key in counts) {
    if (counts.hasOwnProperty(key)) {
        if (counts[key] > max) {
            max = counts[key];
            values = [key];
        } else if (counts[key] === max) {
            max = counts[key];
            values.push(key);
        }
    }
}
return "The highest value is " + values.join(", ") + " with a count of " + max;
}
console.log(Mode([1, 2, 3, 3, 4, 4]));

非常感谢你的帮助:)。

票数 1
EN

Stack Overflow用户

发布于 2016-10-20 10:16:56

在这个array.try中你需要更多的计数

代码语言:javascript
复制
var max =0;
var Mode = function(data) {
    var counts = {};
    for (let i = 0; i < data.length; i++) {
        counts[data[i]] = (counts[data[i]] + 1) || 1;
    }
    for (var key in counts) {
        if (counts.hasOwnProperty(key)) {
             if(counts[key] > max){max=counts[key];}
          
        }
    }
    return max;
}
console.log(Mode([1, 5, 2, 3, 3, 4,4, 4, 4]));//4 is a higher count
console.log(Mode([ 5,5,5,5,5,5,5, 2, 3, 3, 4, 4]));//5 is higher count

票数 1
EN

Stack Overflow用户

发布于 2020-09-11 11:52:46

代码语言:javascript
复制
function mode(numbers) {
    // as result can be bimodal or multi-modal,
    // the returned result is provided as an array
    // mode of [3, 5, 4, 4, 1, 1, 2, 3] = [1, 3, 4]
    var modes = [], count = [], i, number, maxIndex = 0;
 
    for (i = 0; i < numbers.length; i += 1) {
        number = numbers[i];
        count[number] = (count[number] || 0) + 1;
        if (count[number] > maxIndex) {
            maxIndex = count[number];
        }
    }
 
    for (i in count)
        if (count.hasOwnProperty(i)) {
            if (count[i] === maxIndex) {
                modes.push(Number(i));
            }
        }
 
    return modes;
}

console.log(mode([1, 2, 4, 1, 4, 4]));   // 4
console.log(mode([1, 20, 3, 20, 4, 20])); // 20
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40151332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档