gpt4 book ai didi

javascript - UnderscoreJS 按直方图的数值间隔分组

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:24 25 4
gpt4 key购买 nike

有没有办法将数字列表分组为带下划线的数字区间?

// Input:
var arr = [0,1,2,8];
var interval = 3;

// Output:
// There are 3 numbers from 0 to <3
// There are 0 numbers from 3 to <6
// There is 1 number from 6 to <9
// Returns [3, 0, 1]

我注意到有些解决方案不会测试较大的值。尝试第二个测试用例:

var arr = [110,113,116,119];

最佳答案

在普通的 Javascript 中,您可以将数字除以间隔并使用整数部分进行分组。

有一个数组和缺失的间隔。

function getHistogram(array, interval) {
var bin,
result = [];

array.forEach(function (a) {
var key = Math.floor(a / interval);
if (!bin) {
bin = [key, key];
result[0] = 0;
}
while (key < bin[0]) {
--bin[0];
result.unshift(0);
}
while (key > bin[1]) {
++bin[1];
result.push(0);
}
++result[key - bin[0]];
});
return result;
}

console.log(getHistogram([0, 1, 2, 8], 3));
console.log(getHistogram([110, 113, 116, 119], 3));
console.log(getHistogram([15, 10, 26], 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }

带有对象和缺失间隔。

function getHistogram(array, interval) {
var bin,
result = {};

array.forEach(function (a) {
var key = Math.floor(a / interval);
if (!bin) {
bin = [key, key];
result[key] = 0;
}
while (key < bin[0]) {
result[--bin[0]] = 0;
}
while (key > bin[1]) {
result[++bin[1]] = 0;
}
++result[key];
});
return result;
}

console.log(getHistogram([0, 1, 2, 8], 3));
console.log(getHistogram([110, 113, 116, 119], 3));
console.log(getHistogram([15, 10, 26], 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - UnderscoreJS 按直方图的数值间隔分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com