使用 Lodash 合并数组,为什么结果是重复的数组值?,我的代码在哪里出错

Using Lodash Merge array, Why result duplicate array value?, Where wrong my code?

本文关键字:数组 我的 代码 出错 在哪里 合并 Lodash 为什么 结果是 使用      更新时间:2023-09-26

我的代码

var result = [];
var datax = [{
    "tag": "TH000144"
}, {
    "tag": "TH000147"
}, {
    "tag": "TH000166"
}, {
    "tag": "TH000169"
}, {
    "tag": "TH000170"
}];
var newdatax = [{
    "serial": "14563",
    "tag": "TH000144"
}, {
    "serial": "7777",
    "tag": "TH000147"
}, {
    "tag": "TH000169",
    "serial": null
}];
var result = lodash.merge(datax, newdatax);

结果

[{
    "tag": "TH000144",
    "serial": "14563"
}, {
    "tag": "TH000147",
    "serial": "7777"
}, {
    "tag": "TH000169",
    "serial": null
}, {
    "tag": "TH000169"
}, {
    "tag": "TH000170"
}]

我需要这样

[{
    "tag": "TH000144",
    "serial": "14563"
}, {
    "tag": "TH000147",
    "serial": "7777"
}, {
    "tag": "TH000169",
    "serial": null
}, {
    "tag": "TH000166"
}, {
    "tag": "TH000170"
}]

我的代码哪里有问题?

反转合并的参数,就像_.merge(newdatax, datax);

我对出错的看法:

当递归合并函数达到TH000169时,它解析为未定义;似乎很可能是由于串行的值null。文档在这里提到了这种潜在的挂断。文档还建议它应该采用 _.merge(destination, source); 的形式。

var result = [];
var datax = [{
    "tag": "TH000144"
}, {
    "tag": "TH000147"
}, {
    "tag": "TH000166"
}, {
    "tag": "TH000169"
}, {
    "tag": "TH000170"
}];
var newdatax = [{
    "serial": "14563",
    "tag": "TH000144"
}, {
    "serial": "7777",
    "tag": "TH000147"
}, {
    "tag": "TH000169",
    "serial": null
}];
var result = _.merge(newdatax, datax);
console.log(JSON.stringify(result, null, 4));

结果

[
    {
        "serial": "14563",
        "tag": "TH000144"
    },
    {
        "serial": "7777",
        "tag": "TH000147"
    },
    {
        "tag": "TH000166",
        "serial": null
    },
    {
        "tag": "TH000169"
    },
    {
        "tag": "TH000170"
    }
]