首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CouchDb中的扁平阵列

CouchDb中的扁平阵列
EN

Stack Overflow用户
提问于 2015-07-24 18:40:47
回答 1查看 228关注 0票数 1

我在学习CouchDb,我有个问题

我有两份文件

代码语言:javascript
复制
{
   "_id": "2a8b8edb5d47c1e9fbafd414f60023af",
   "_rev": "4-e305faba47bcb08569d225b181ba927e",
   "skills": [
       "js",
       "php"
   ],
   "type": "user",
   "age": 32
}

{
   "_id": "2a8b8edb5d47c1e9fbafd414f6002443",
   "_rev": "4-edbfaa004143fc65df823f60b7f9ee94",
   "skills": [
       "js",
       "nodejs",
       "angular"
   ],
   "type": "user",
   "age": 28
}

我想检索一个数组,比如

代码语言:javascript
复制
['js','php','nodejs','angular']

没有重复。我试过用这张地图

代码语言:javascript
复制
function(doc) {
var user = [];
for (item in doc.skills) {
  user.push(doc.skills[item]);
} 
  emit( doc.type, user);
}

我得到了

代码语言:javascript
复制
["js", "php"]
["js", "nodejs", "angular"]

我试着用这个减少

代码语言:javascript
复制
function (key, skills){
 var skill = [];
 skill.push(skills);
 return skill
}

结果是

代码语言:javascript
复制
[[["js", "nodejs", "angular"], ["js", "php"]]]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-24 18:45:25

在减少功能中,skills是一组技能列表,因此您需要将每一项技能连接到结果中:

代码语言:javascript
复制
function(key, skills) {
  var result = [];
  var seen = {};
  skills.forEach(function(s) {
    s.forEach(function(skill) {
      if (seen[skill])
        return;
      seen[skill] = true;
      result.push(skill);
    });
  });
  return result;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31617582

复制
相关文章

相似问题

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