はじめに
開発しているアプリでGoogleカレンダーの予定を同期した際にデータベースに保存するようにしています。しかし、カレンダー側で削除した予定がデータベースには残っていて、表示されてしまっていました。
削除済みの予定をデータベースから削除する際に、データベースに保存している予定とGoogleカレンダーから取得した予定の差分を取得したいと思いました。
そこで、Lodashを利用すると配列の差分を簡単に取得することができます。
準備
インストール
npmの場合
$ npm i -g npm
$ npm i --save lodash
yarnの場合
$ yarn add lodash
インポート
import _ from "lodash";
使い方
_.differenceWithの第一引数に対象の配列、第二引数に比較対象の配列、第三引数にコンパレーターを指定します。
console.log(dbEvents)
// →[ { id: "idOfEvent1"}, { id: "idOfEvent2"} ]
console.log(calendarEvents)
// →[ { id: "idOfEvent1" }, ]
const diff = _.differenceWith(dbEvents, calendarEvent, (objValue, othValue) => {
// 第一引数のidと第二引数のidが一致した場合はtrueを返す
if (objValue.id === othValue.id) {
return true;
}
});
console.log("Diff is", diff);
// → Diff is [ { id: "idOfEvent2" } ]
- Miyata Koki - [O:inc.](https://o-inc.jp/)でAmplify×React×React Nativeを使用して開発しています。大学のゼミでは統計学をPythonで行っています。 インターンやゼミで学んだ情報を発信していくので、フォロバするのでぜひこちらのアカウントのフォローお願いします!