繁体   English   中英

Javascript如何添加和删除深度为2级的JSON元素

[英]Javascript how to add and remove JSON element which is on 2 level deep

我搜索了很多关于如何从JSON对象中删除元素的消息。

这是我的简化JSON来说明我的要求。

束:

{
    "resourceType": "Bundle",
    "meta": {
        "lastUpdated": "2017-10-06T04:42:22.411Z"
    },
    "type": "searchset",
    "total": "0",
    "entry": [
        {
            "_id": "59d5739e668e9e3fd29aeb0d",
            "resource": {
                "id": "59d5739e668e9e3fd29aeb0d"
            },
            "__v": 0
        },
        {
            "_id": "59d6a3fae4b45d50c5ffd4f7",
            "resource": {
                "id": "59d6a3fae4b45d50c5ffd4f7"
            },
            "__v": 0
        },
        {
            "_id": "59d6a831e4b45d50c5ffd4fa",
            "resource": {
                "id": "59d6a831e4b45d50c5ffd4fa"
            },
            "__v": 0
        }
    ]
}

如何删除所有entry._id和entry .__ v? 我尝试了这些,但是没有用。

delete bundle.meta;   <-- meta is on level 1, it works.
delete bundle.entry._id; <-- not working. The _id under entry
delete bundle.__v; <-- not working. The __v is also under entry

如何在每个条目(例如“全名”)下添加新元素,如下所示

我想要的结果-删除“ _id”和“ __v”,然后在条目[]中添加“全名”:

{
    "resourceType": "Bundle",
    "meta": {
        "lastUpdated": "2017-10-06T04:42:22.411Z"
    },
    "type": "searchset",
    "total": "0",
    "entry": [
        {
            "fullname": "Apple",
            "resource": {
                "id": "59d5739e668e9e3fd29aeb0d",
            }
        },
        {
            "fullname": "Orange",
            "resource": {
                "id": "59d6a3fae4b45d50c5ffd4f7"
            },
        }, ......

我尝试了很多方法,并且用谷歌搜索了很多。 谢谢您的帮助!


感谢Vivek的回答。 有用。

for (var i = 0; i < bundle.entry.length; i++) {
    delete bundle.entry[i]._id;
    delete bundle.entry[i].__v;
    bundle.entry[i].fullname = "Test";
}

bundle.entry是一个数组。 :)
删除第一个元素的_id:
delete bundle.entry[0]._id
删除所有元素的_id和__v:
bundle.entry = bundle.entry.map(function(entry){ var newEntry = { resource: entry.resource, fullname: "fullname here" }; return newEntry; });

请尝试下面的代码。 经过测试可以帮助您。

  var object1 = {
    "resourceType": "Bundle",
    "meta": {
        "lastUpdated": "2017-10-06T04:42:22.411Z"
    },
    "type": "searchset",
    "total": "0",
    "entry": [
        {
            "_id": "59d5739e668e9e3fd29aeb0d",
            "resource": {
                "id": "59d5739e668e9e3fd29aeb0d",
            },
            "__v": 0
        },
        {
            "_id": "59d6a3fae4b45d50c5ffd4f7",
            "resource": {
                "id": "59d6a3fae4b45d50c5ffd4f7"
            },
            "__v": 0
        },
        {
            "_id": "59d6a831e4b45d50c5ffd4fa",
            "resource": {
                "id": "59d6a831e4b45d50c5ffd4fa"
            },
            "__v": 0
        }
    ]
  };

  var array1=['Apple','Orange','Gava']

  function a(){
        for(var i=0;i<object1.entry.length;i++){
            delete object1.entry[i]._id;
            delete object1.entry[i].__v;
            object1.entry[i].fullname = array1[i];
        }
        console.log(object);
  }
const fullNameList = ['Apple', 'Orange', 'Guava']
delete bundle.meta
bundle.entry = bundle.entry.map((item, index) => {
    const {__v, _id, ...restObj } = item;
    restObj.fullname = fullNameList[index]
    return restObj;
})

注意fullNameList的长度和bundle.entry的长度必须相同

您可以使用地图功能并从对象中删除键,并在同一功能中添加键,如下所示:

 var data = { "resourceType": "Bundle", "meta": { "lastUpdated": "2017-10-06T04:42:22.411Z" }, "type": "searchset", "total": "0", "entry": [ { "_id": "59d5739e668e9e3fd29aeb0d", "resource": { "id": "59d5739e668e9e3fd29aeb0d" }, "__v": 0 }, { "_id": "59d6a3fae4b45d50c5ffd4f7", "resource": { "id": "59d6a3fae4b45d50c5ffd4f7" }, "__v": 0 }, { "_id": "59d6a831e4b45d50c5ffd4fa", "resource": { "id": "59d6a831e4b45d50c5ffd4fa" }, "__v": 0 } ] } var names = ['A','B','C']; var counter = 0; data.entry = data.entry.map(function(obj){ delete obj['_id'] delete obj['__v'] obj.fullname = names[counter] counter++ ; return obj }); console.log(data); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM