首页 > 解决方案 > 从数据数组创建单个标签 - Node.js

问题描述

所以我设备的变量结果输出是一个数组,下面有 JSON 响应。我想获取每个键的第一个值并将其制成一个单独的对象,以便我可以将它发送到 mongoose 数据库以保存结果。我该怎么做?键中的值是动态的,可能是 2 或 100,具体取决于它找到的内容。

[
{
    "Read_Count": [
        31,
        5,
        23,
        1
    ],
    "Antenna": [
        1,
        1,
        1,
        1
    ],
    "EPC": [
        "300833B2DDD9014000000000",
        "E280116060000207B6C9E1E2",
        "300833B2DDD9014000000000",
        "E2801160600002096622B8C0"
    ],
    "Signal": [
        224,
        196,
        212,
        194
    ]
}

我希望输出如下:

{
   "Tags": [
    { "EPC":"300833B2DDD9014000000000", "Read_Count": 31, "Antenna": 1, "Signal": 224 },
    { "EPC":"E280116060000207B6C9E1E2", "Read_Count": 5, "Antenna": 1, "Signal": 196 },
    { "EPC":"E2801160600002096622B8C0", "Read_Count": 23, "Antenna": 1, "Signal": 212 } 
  ]
}

标签: jsonnode.jsmongodb

解决方案


因此,对于数组中的每个对象,您需要遍历其键并将结果中该键的值设置为该键值中数组的第一个元素。

var result = {
    'Tags': []
}
response.forEach(tag => {
    var resultingTag = {}
    Object.keys(tag).forEach(key => {
        resultingTag[key] = tag[key][0]
    })
    result.Tags.push(resultingTag);
}

(“响应”是您在第一个代码块中发布的输入数组,如果不清楚的话)


推荐阅读