从角度js中删除另一个json列表中的列表

时间:2016-03-24 05:43:47

标签: angularjs json

这是主要的json列表

allData=
{
    "searchList": [{
        "vaccinationId": 1,
        "vaccinationName": "vacc 1",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 2,
        "vaccinationName": "vacc 2",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 3,
        "vaccinationName": "vacc 3",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 4,
        "vaccinationName": "vacc 4",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 5,
        "vaccinationName": "vacc 5",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 6,
        "vaccinationName": "vacc 6",
        "vaccinationNameAr": null
    }]
}

这是现有的json列表

alreadyExist = {
    "searchList": [{
        "vaccinationId": 2,
        "vaccinationName": "vacc 2",
        "vaccinationNameAr": null,
        "defaultYn": null
    }, {
        "vaccinationId": 5,
        "vaccinationName": "vacc 5",
        "vaccinationNameAr": null,
        "defaultYn": null
    }]
}

必须从主json列表中删除现有数据,因此结果将是

allData = {
    "result": [{
        "vaccinationId": 1,
        "vaccinationName": "vacc 1",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 3,
        "vaccinationName": "vacc 3",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 4,
        "vaccinationName": "vacc 4",
        "vaccinationNameAr": null
    }, {
        "vaccinationId": 6,
        "vaccinationName": "vacc 6",
        "vaccinationNameAr": null
    }]
}

如何通过删除现有数据来获得新的所有数据列表。

2 个答案:

答案 0 :(得分:1)

您可以使用forEachmap

 alreadyExist.searchList.forEach(function(existInfo) {
       var index = allData.searchList.map(function(e) { return e.vaccinationId;    }).indexOf(existInfo.vaccinationId);

    if(index != -1) {
        allData.searchList.splice(index, 1);
    }
})

答案 1 :(得分:0)

您可以将Lodash用于此目的

allData.searchList = _.differenceBy(allData.searchList, alreadyExist.searchList, 'vaccinationId');