- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有没有办法将数字列表分组为带下划线的数字区间?
// 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/
我有这个数组: var ty = [ { "Language": "en-GB", "Section": "Sales", "ItemName": "Typ
我有一个对象列表“objlist”和一个 id 列表“idlist”。 var objlist = [{id:1, visible:true},{id:2, visible:false},{id:3,
我想做一个面包屑。我从后端获取数据,如下所示: var object = { "Department": { "DeptCode": null, "Descri
我有一个带有 bool 值的对象,一旦该值为true,我想测试我的对象中是否存在与函数相同的值,如果存在,那么我想调用该函数。我只需使用 JavaScript 即可做到这一点。 但是我正在寻找使用 u
我有这样的数据: var dates = [ {date: "2000-01-01", total: 120}, {date: "2000-10-10", total: 100},
假设我有一个长度为N的数组myArray。我想循环第 N 次。在纯 JavaScript 中,这将是: for (var i = 0; i < myArray.length; i++) {} 有没有办
我有一个来自数据库的对象数组,为了简洁起见,我想将其折叠。我已导入 underscore.js 来帮助完成此过程,但尝试使用提供的“groupBy”函数来压缩以下列表未成功: [ {ID:25
我有如下所示的 JSON 数组: [{ 'a': 1, 'b': 10, 'aa': { 'a': 11, 'ab': 110 } }, { 'a': 2, 'b': 2
这是album.tracks.items的json内容 [{ "disc_number": 1, "duration_ms": 220613, "exp
我有两个数组,balances 和 commits balances = [ {name: 'vacation', value: ''21}, {name: 'account', value: '2
我有一个组对象: {groupid1: "metadata", groupid2: "metadata"} 还有一组用户: [ { name: "something", groups: [
第一次使用下划线,我卡住了,找不到例子。 我的数据是: [{ "store_name": "Store 1", "franchisee_id": "id01",
只是存在一个 underscoreJs 方法来将具有某些属性的对象转换为具有关键属性的对象集合吗? 我的意思是,如果 underscorejs 中存在一个等效于此的简单方法: function obj
我正在尝试使用下划线独特的功能,但无法让它工作,这是我的测试代码: var foo = [ { "a" : "1" }, { "b" : "2" }, { "a" : "1" } ]; _.uniqu
有没有办法将数字列表分组为带下划线的数字区间? // Input: var arr = [0,1,2,8]; var interval = 3; // Output: // There are 3 n
在 AngularJS Controller 中有以下内容: $scope.initiatives = _.where($scope.initiatives, {i_status_id:'Open'}
我试图简单地用空字符串替换无效日期。我正在迭代对象数组,但每当我尝试使用 _.each() 时,我都会迷路。如果有人可以向我展示一种迭代列表中所有 fieldsToCheck 项目的方法,那就太棒了。
我正在 Underscore.js 中寻找一种方法来查找数组中数字之间的两个数字。 数字不能是 20 或列表中的任何数字。 我有一个可以运行的 Javascript 版本 var data = [
基本上我想使用 Lo dash 或 Underscore(最好是 lo-dash),但是对于我的系统来说,重要的是我不要全局加载变量并匿名使用它们。如果我不能使用 anon,那么至少将当前版本保留在页
我有一个对象数组。我想groupby & filter(remove) undefined object 、类别。为了更清楚地说明,请参阅下面的脚本: arrayFlatten = [ {
我是一名优秀的程序员,十分优秀!