按金额分组并显示第一个和最后一个位置
Group by amount and display first and last position
你好,我有这些数据:
[
{amount:1, position:1},
{amount:1, position:2},
{amount:1, position:3},
{amount:2, position:4},
{amount:2, position:5}
]
我想把它们转换成
[{amount: 1, range: "1-3"}, {amount: 2, range: "4-5"}]
有图书馆能做到这一点吗?
编辑
我第一次尝试使用下划线。我按数量对它们进行分组,然后绘制它们的地图。但这是最好的方式吗?
data = _.groupBy(data, function (item) {
return item.amount;
})
data = _.map(data, function (item, index) {
return {
amount: index,
range: _.first(item).position + "-" + _.last(item).position
}
})
我可以建议您使用http://underscorejs.org或https://lodash.com,它们都没有直接解决你问题的功能,但你可以创造性地将一些现有功能结合起来:)祝你好运。
您应该学习函数式编程=]<3
var y = [{amount:1, position:1},{amount:1, position:2}, {amount:1, position:3}, {amount:2, position:4}, {amount:2, position:5}]
var amounts = []
y.map(function(obj){
obj = y.reduce(function(a,i,ii){
if (ii === 1){
if (a.amount === obj.amount){
a.position = 1
a.set = true
}else{
a.amount = obj.amount
a.set = false
}
return a
}
if (i.amount === a.amount && !a.set){
a.set = true
a.position = i.position
return a
}
if (a.amount === i.amount)
a.range = i.position
return a
})
return {amount:obj.amount,range:obj.position+'-'+obj.range}
})
.filter(function(obj){
if (!amounts[obj.amount]){
amounts[obj.amount] = true
return true
}
return false
})
相关文章:
- 无法获取vis.js最后一个或第一个选定的网络节点
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 浮动图-如何在x轴上显示第一个月和最后一个月的minTickSize:[2,“month&”]
- 第一个元素和最后一个元素之间的连续循环
- 引导程序转盘隐藏第一个和最后一个控件
- 使用jquery以dd-mmm-yyyy格式获取给定日期后的第一个日期和最后一个日期
- 删除第一个和最后一个<br/>来自字符串
- 如何删除字符串的第一个和最后一个字符
- jQuery删除除第一个和最后一个数字之外的所有数字
- Jquery幻灯片中的列表,连接第一个和最后一个列表元素以创建旋转木马
- 谷歌地图没有显示地图上的所有目的地标记,只有第一个和最后一个
- 谷歌图表,有问题地获取第一个和最后一个点的趋势线值
- jQuery slice() 方法 在 html 中选择元素(第一个/最后一个)
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- Javascript 中的第一个下一个/上一个子字符串位置
- JavaScript 替换第一个/最后一个字母并将中间文本括在标签中
- 关于使用类名定位第一个上一个最近元素的问题
- 猫头鹰旋转木马,到达第一个/最后一个项目后导航被禁用
- (HTML / JS)添加“,“在第二个最后一个字串和隐藏"&"如果字符串中有一个单词
- 使用Jquery获取匹配条件的第一个前一个元素