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

标签 javascript lodash

我的代码

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 值所致。文档提到了这个潜在的挂断 HERE 。该文档还建议它应采用 _.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"
    }
]

关于javascript - 使用Lodash合并数组,为什么结果重复数组值?,我的代码哪里错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27518349/

相关文章:

php - 在 PHP 和 JavaScript 之间交换变量

javascript - 在 React 中获取子属性

javascript - 如何将流包装为 async ,使其在启动流之前等待名称解析

javascript - 为什么我无法从 $(document).ready 调用外部函数

javascript - 如何在没有运算符的情况下将 lodash _ 与数组而不是多个参数一起使用

javascript - 难以捉摸的重新验证错误。复制代码总是失败

javascript - 比 lodash 链更好、更高效

javascript - Lodash:如何从对象数组中获取唯一值,然后按这些唯一值对这些对象进行排序?

reactjs - React + Firebase - 删除映射组件内的 firebase 对象

javascript - 使用 lodash 从具有属性的对象数组中提取对象