javascript - 如何获得按 "value"值降序排序的映射/归约结果?如果也使用列表函数可以实现这一点?

标签 javascript mapreduce couchdb couchdb-futon

我有这样的 View 和减少: map :

   function(doc) {
           if(doc.type){
            var usersLength = doc.users.length;
            for (var i = 0; i < usersLength ; i++) {
                    emit([doc.users[i].userid,doc.Service.ownId], 1);
                }
            }
        }

减少:

 function(keys, values, rereduce)
    {
      return sum(values);
    }

然后像这样调用 View :_design/aaa/_view/getUserId?group=true&group_level=2&startkey=["111111"]&endkey=["111111",{}]

我可以得到下面的结果集:

{"rows":[
{"key":["111111",""],"value":7},
{"key":["111111","FFFF26"],"value":1},
{"key":["111111","FFFF44"],"value":7},
{"key":["111111","FFFF34"],"value":2}
]}

但是,我希望将上面的结果集按照“value”值的降序排序。如果也使用列表功能可以实现吗?预期结果如下:

{"rows":[
{"key":["111111",""],"value":7},
{"key":["111111","FFFF44"],"value":7},
{"key":["111111","FFFF34"],"value":2},
{"key":["111111","FFFF26"],"value":1}
]}

最佳答案

如果您想对结果集进行排序,则必须按值降序排序,您可以使用比较器回调进行排序:

// ES6 Syntax
let originalResult = {
"rows":[
  {"key":["111111",""],"value":7},
  {"key":["111111","FFFF26"],"value":1},
  {"key":["111111","FFFF44"],"value":7},
  {"key":["111111","FFFF34"],"value":2}
]}

let newResult = {
  rows: originalResult.rows.sort((a, b) => b.value - a.value)
} 

关于javascript - 如何获得按 "value"值降序排序的映射/归约结果?如果也使用列表函数可以实现这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800308/

相关文章:

javascript - 弹出窗口中的背景页面 - chrome 扩展

javascript - 如何将逗号分隔的 JSON 值显示为列表?

hadoop - 将文件拆分为 80% 和 20% 以在 MapReduce 中构建模型和预测的更好方法

mongodb - 哪些 NoSQL 数据库(如果有)可以为查询结果集提供 *changes* 流?

java - 如何在 java 中使用 lightcouch api 从 couchdb 获取所有文档

python - scrapy 项目在将它们存储到 couchdb 时不是 JSON 可序列化的

javascript - HTML5 运动检测、抓取和滚动

Javascript - 实习生 - Windows 未定义

java - 使用 Hadoop Map-Reduce 去除不可打印的字符

java - 在 Hadoop Map Reduce 中重命名部分文件