javascript - Lodash差异通过澄清

标签 javascript reactjs react-native lodash

我有两个对象数组,我想通过 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,
    },
]

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

最佳答案

我认为您只需将前两个参数切换为 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>

关于javascript - Lodash差异通过澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57888023/

相关文章:

javascript - Vue.js 3 this.$root.$on 不是函数

javascript - NextJS 项目中使用的 ReactJS 库表示不是构造函数

ios - 如何使用 faSTLane 构建 react native iOS 应用程序

javascript - 滚动事件停止后的事件?

JavaScript 本地存储 : prevent invalid tokens

javascript - 如何将这两个函数合并为一个 Javascript 函数?

reactjs - 将泛型类型的实现传递给 React 组件 props

javascript - React.js 获取 Giphy API

reactjs - undefined 不是一个对象(评估 'this.props.navigator.push' )

设置 Firebase+Crashlytics 时 Android 项目构建失败