合并根据联盟和交叉的两个JSON数组对象(Merging two json array object

2019-11-04 05:58发布

我试图用合并对象作为元素2个JSON数组。 你可以参考这个plunkr文件两个JSON。 我已成功取得预期的最终结果阵列的ID,但我不知道该怎么如下形成背预期的JSON。 我使用下划线的js用于此目的。

注意:如果对象newJson而不是在currentJson存在,合并后,这将是inactive默认状态。

我不知道我是否使用了正确的方法。 这是我尝试:

var newJsonID = _.pluck(newJson, 'id');
var currentJsonID =  _.pluck(currentJson, 'id');
var union = _.union(newJsonID, currentJsonID);
var intersection = _.intersection(currentJsonID, newJsonID);
var final = _.difference(union, _.difference( currentJsonID, intersection);

预计最终的结果:

   [
    {
        "id": "12",
        "property1Name": "1"
        "status": "inactive"
    },
    {
        "id": "11",
        "property1Name": "1"
        "status": "inactive"
    },
    {
        "id": "10",
        "property1Name": "1"
        "status": "inactive"
    },
    {
        "id": "9",
        "property1Name": "1"
        "status": "active"
    }
]

Answer 1:

在普通的JavaScript溶液与两个循环和查找哈希表。

 function update(newArray, currentArray) { var hash = Object.create(null); currentArray.forEach(function (a) { hash[a.id] = a.status; }); newArray.forEach(function (a) { a.status = hash[a.id] || 'inactive'; }); } var newJson = [{ "id": "12", "property1Name": "1" }, { "id": "11", "property1Name": "1" }, { "id": "10", "property1Name": "1" }, { "id": "9", "property1Name": "1" }], currentJson = [{ "id": "10", "property1Name": "1", "status": "inactive" }, { "id": "9", "property1Name": "1", "status": "active" }, { "id": "8", "property1Name": "1", "status": "active" }, { "id": "7", "property1Name": "1", "status": "inactive" }]; update(newJson, currentJson); document.write('<pre>' + JSON.stringify(newJson, 0, 4) + '</pre>'); 



文章来源: Merging two json array object based on union and intersection