【问题标题】:Lodash differenceBy clarificationLodash差异通过澄清
【发布时间】:2019-09-11 11:21:38
【问题描述】:

我有两个对象数组,我想通过identifier 找出 newData 和 oldData 数组之间的区别,显示差异,其中 oldData 的标识符与 newData 数组不同,这是我的数组:

const newData = [
    {
        "extras": {},
        "identifier": "13",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
    },
    {
        "extras": {},
        "identifier": "18",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
    }

]

const oldData = [
    {
        "identifier": "13",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
    },
    {
        "identifier": "12",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
    }
]

这是我在做什么:

let testDifference = _.differenceBy(newData, oldData, "identifier")

我的期望,我会得到

[
    {
        "identifier": "12",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
    },
]

实际上,我得到的是空数组,我做错了什么?如何使其正常工作?

【问题讨论】:

    标签: javascript reactjs react-native lodash


    【解决方案1】:

    我认为您只需将前两个参数切换为 differenceBy 即可获得您期望的结果。您可以将其视为第一个数组项除了第二个数组项。

    const newData = [{
      "extras": {},
      "identifier": "13",
      "latitude": 39.13063,
      "loiteringDelay": 1000,
      "longitude": -86.58286,
      "notifyOnDwell": false,
      "notifyOnEntry": true,
      "notifyOnExit": true,
      "radius": 30,
    }]
    
    const oldData = [{
        "identifier": "13",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
      },
      {
        "identifier": "12",
        "latitude": 39.13063,
        "loiteringDelay": 1000,
        "longitude": -86.58286,
        "notifyOnDwell": false,
        "notifyOnEntry": true,
        "notifyOnExit": true,
        "radius": 30,
      }
    ];
    
    let whatDelete = _.differenceBy(oldData, newData, "identifier");
    
    console.log(whatDelete);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

    【讨论】:

    • 奇怪,我先尝试过,但没有成功。我一定是打错了什么。
    猜你喜欢
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2014-12-11
    • 2014-03-09
    • 2013-06-27
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多