Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Couchdb正在尝试按数组值分组_Javascript_Object_Underscore.js_Couchdb - Fatal编程技术网

Javascript Couchdb正在尝试按数组值分组

Javascript Couchdb正在尝试按数组值分组,javascript,object,underscore.js,couchdb,Javascript,Object,Underscore.js,Couchdb,我在转换数组时遇到问题。 下面是一个输入示例: { "_id": "beaconlog_888ff29df356c803_Amsterda", "_rev": "5152-3c6e5f47d6860179cf80b9bca3efba4b", "beacon_identifier": "Amsterdam", "beacon": "office", "in_region":

我在转换数组时遇到问题。 下面是一个输入示例:

            {
          "_id": "beaconlog_888ff29df356c803_Amsterda",
          "_rev": "5152-3c6e5f47d6860179cf80b9bca3efba4b",
          "beacon_identifier": "Amsterdam",
          "beacon": "office",
          "in_region": true
        }
{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
我使用以下映射函数在couchdb中创建了一个视图:

        function (doc) {
          if(doc.beacon) {
            emit([doc.beacon_identifier, doc.beacon, doc.in_region],1);

          }
        }     
{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
对于reduce,我使用第3级组的_count

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
这是我当前的输出:

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
输出:

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
这就是我想要实现的最终结果集:

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
{
    "Amsterdam": {
        "inactive": 2,
        "active": 1
    },
    "Rotterdam": {
        "inactive": 1
    }
}

有人能帮我吗?

两种解决方案都是纯javascript

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
o.rows.reduce(function(result, input) {
  var bool = input.key[2];
  var city = input.key[0];
  result[city] = result[city] || {};
  result[city][bool] = input.value;
  return result;
}, {});
第一个解决方案以原始数据集为特征,并对元素进行迭代,通过向属性添加属性获得所需的对象,并在给定的情况下添加一些值

{
            "rows": [{
                "key": ["Amsterdam", "office", false],
                "value": 2
            }, {
                "key": ["Amsterdam", "office", true],
                "value": 1
            }, {
                "key": ["Rotterdam", "office", false],
                "value": 1
            }]
        }
var数组=[{
“_id”:“beaconlog_888ff29df356c803_Amsterda”,
“修订版”:“5152-3C6E5F47D680179CF80B9BCA3EFBA4B”,
“beacon_标识符”:“阿姆斯特丹”,
“灯塔”:“办公室”,
“in_地区”:正确
}],
结果={};
array.forEach(函数(a){
变量类型=['inactive','active'];
结果[a.beacon_标识符]=结果[a.beacon_标识符]|{};
结果[a.beacon_identifier][TYPE[+a.in_region]]=(结果[a.beacon_identifier][TYPE[+a.in_region]]0)+1;
});

document.write(“”+JSON.stringify(结果,0,4)+“”)
为什么
“false”:2
对于
阿姆斯特丹
?@Tushar它来自
“value”
。您可能也应该添加您的输入数组,以便我们更好地理解转换。我同意,输入数组将有助于更轻松地理解问题并找出解决方案。嗨,尼娜,谢谢,它与您的解决方案配合得很好!