javascript - 如何删除不需要的键和键值

标签 javascript node.js


这是我从我的 CouchDB 数据库中检索的原始 JSON 对象:

 {
  "total_rows": 3,
  "offset": 0,
  "rows": [
    {
      "id": "1e8fe199d4e761b71bb8920eb3003db2",
      "key": null,
      "value": {
        "_id": "1e8fe199d4e761b71bb8920eb3003db2",
        "_rev": "3-6979e0cd646f2bc0ddf84c0664d25808",
        "Room_number": 99,
        "Location": "City campus",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
      }
    },
    {
      "id": "1e8fe199d4e761b71bb8920eb3004cc6",
      "key": null,
      "value": {
        "_id": "1e8fe199d4e761b71bb8920eb3004cc6",
        "_rev": "2-f7250cca62a804137174a20f48312c40",
        "Room_number": 12,
        "Location": "City hall",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
      }
    }
  ]
}

我想让它看起来像下面的 JSON 对象:

[
    {
        "Room_number": 99,
        "Location": "City campus",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
    },
    {
        "Room_number": 12,
        "Location": "City hall",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
    }
]

这是我目前得到的:

[
    {
        "value": {
            "Room_number": 99,
            "Location": "City campus",
            "Timetable": {
              "Monday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Tuesday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Sunday": [
               "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ]
            }
        }
    },
    {
        "value": {
            "Room_number": 12,
            "Location": "City hall",
            "Timetable": {
              "Monday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Tuesday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Sunday": [
               "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ]
            }
        }
    }
]

这是我用来实现此目的的 NodeJS 代码:

var express = require('express')
   , db = require('nano')('http://localhost:5984/rooms_database')
   , app = express();

// query a view
db.view('show_rooms', 'view_show_rooms', function (err, doc)
{
    app.get("/", function(request,response)
    {
        var json_data = doc;
        json_data = json_data.rows;

        for (var i = 0; i < json_data.length; i++)
        {
            delete json_data[i].id;
            delete json_data[i].key;
            delete json_data[i].value._id;
            delete json_data[i].value._rev;
        }

        response.send(json_data);
    });
});

app.listen(8080);
console.log('************ Server is running! ************');

我在 CouchDB 中使用标准 View :

function(doc)
{
    emit(null, doc);
}

谁能告诉我如何去掉 JSON 对象中的 'value' 键?

最佳答案

您可以使用 Array.map() 像这样映射每个项目,保留你想要的而不是删除你不想要的:

var output = json_data.rows.map(function(item) {
    return {
        Room_number: item.value.Room_number,
        Location: item.value.Location,
        Timetable: item.value.Timetable
    }
});

关于javascript - 如何删除不需要的键和键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683174/

相关文章:

javascript - Sequelize 和 Postgres - 无法实现外键约束

javascript - 如何在 Web 应用程序中使用 Node、Express、Postgresql 遵循 MVC 架构

javascript - 使用 Promise.race 和 setImmediate 确定 Promise 状态

javascript - AngularJS 类型错误

javascript - 根据已排序的 "subset"数组的顺序有效地对无序的 "master"数组进行排序

javascript - Websockets 仅在 Socket.io 1.3.4 中传输

javascript - 在express中使用返回值发送到ajax成功

javascript - 抓取一个有 javascript 的网站

java - servlet可以更改另一个域的cookie吗

javascript - 在 Javascript 中寻找具有区域设置和时区支持的日期解析器库