はじめに
Notion Formula の第14回目から4日間にわたって、Formula 2.0 から導入されたリストに対するメソッドを順次解説する予定でした。今回は、リストを加工するメソッドを解説しています。今回でリストは終わる予定でしたが、filter と map はかなり複雑なので、こちらは明日のその2で解説することとし、今日はそれ以外のものを解説します。すでに逆引き Formula のページに関数説明があるので、このページを見ながら解説していきます。
特定値を取得: at, first, last, find, findIndex, slice
リストを調査: empty, length, contains, includes, every, some,
リストから計算: max, min, mean, sum, median
リストを加工(その1): concat, flat, reverse, sort, unique
リストから文字列(文字列の回で解説): join
concat()
「concat()」は2つのリストを連結したリストを返します。文法は以下のようになります。リストは数値・文字列・日付・チェックボックスのいずれも可能です。
prop("list1").concat(prop("list2"))
flat()
「flat()」はリストのリストを単一のリストに平坦化します。例えば複数のリレーション先のマルチセレクトを map で取得したりすると、マルチセレクトのリストをネストしたリストが得られます。この時にマルチセレクトの値を取り出そうとするには、フラットにしたリストを作る必要があります。それを実現するのが flat() です。文法は以下のようになります。
prop("list").flat()
リストは数値・文字列・日付・チェックボックスのいずれも可能です。オリジナルの数値リストは以下のようにリストのリストに設定していますが、flat 後は [3, 5, 2]
のようにフラット化されています。
文字列も同様です。 ["a", ["b1", "b2"]]
が ["a", "b1", "b2"]
とフラット化されます。
日付のリストも同様です。
チェックボックスも同様です。
reverse()
「reverse()」は反転したリストを返します。こちらも中身は、数値・文字列・日付・チェックボックスのいずれも可能です。文法は以下のようになります。
prop("list").reverse()
sort()
「sort()」は入力リストの並べ替えられたバージョンを返します。これも数値・文字列・日付・チェックボックスのいずれも可能です。文法は以下のようになります。
sort の引数にキーを設定することができます。文法は以下のようになり、current で指定できる式を記述します。
prop("list").sort(currentに関する式)
この最も多い使い道は、リレーション先のプロパティをキーにする使い方です。ここでは、subs というリレーションをページの数値プロパティをキーとして並び替えしています。
unique()
「unique()」は入力リスト内の一意の値のリストを返します。文法は以下のようになります。
prop("list").unique()
おわりに
リストについては 4 日で終わる予定でしたが、filter と map の前まででかなり長くなってしまったので、こちらはその 2 に回すことにします。今回は、それ以外のリストを加工する基本的なメソッドを紹介しました。