# API取得した「user」情報にfiltter()でエラーが出る

**URL:** <https://community.cybozu.dev/t/topic/9140>\
**Category:** kintone 開発相談\
**Created:** [2024 年 6 月 8 日午前 7:23 UTC](https://community.cybozu.dev/t/topic/9140 "2024-06-08T07:23:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 6 月 8 日午前 7:23 UTC](https://community.cybozu.dev/t/topic/9140/1 "2024-06-08T07:23:36Z")

</div>

お世話になります。

下記コードでAPI取得した連想配列に対してログインユーザーと一致する情報を絞り込みたいのですが、「Uncaught TypeError: users.filter is not a function」と出てしまいます。  
念のためコンソール結果も添付しますが一部は個人情報のため伏せます。

解決方法をご存知の方がいましたらご教授いただければ幸いです。

```javascript
kintone.events.on(["app.record.create.show", "app.record.create.submit"], async function (event) {

        let loginId = kintone.getLoginUser()['id'];
        let numLoginId = Number(loginId);
        console.log(numLoginId);
        console.log(typeof (numLoginId));
        {
            const users = await kintone.api(kintone.api.url('/v1/users', true), 'GET', {});
            console.log(users);

            let test = users.filter(p => p.id == numLoginId);
            console.log(test);

```

 ![image](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/2X/3/3e5bbe6ef1bec73258b965a6ec09845840e33a9f.png)

---

<div class="post-metadata">

**Author:** ![TaroTanaka](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/tarotanaka/32/985_2.png) [@TaroTanaka](https://community.cybozu.dev/u/TaroTanaka)\
**Post date:** [2024 年 6 月 8 日午前 8:45 UTC](https://community.cybozu.dev/t/topic/9140/2 "2024-06-08T08:45:10Z")

</div>

kaiさん、こんにちは！

あまり、そのまま答えを回答してしまうのは良くないので、  
少し回りくどい説明になってしまいますが、

`console.log(users);`  
で出力されている結果は、Object型が出力されているかと思います。

filterは、Array（配列）に対して使える関数であるため、  
users.filter is not a function  
と、エラーが表示されています。

もしどうしても解決できない場合は、回答させていただきますが、  
あともう一歩のところまで来ていますので、  
頑張ってみてください。

---

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 6 月 10 日午前 12:46 UTC](https://community.cybozu.dev/t/topic/9140/3 "2024-06-10T00:46:32Z")

</div>

田中太郎様

ご回答ありがとうございます。  
Object型が出力されていることは把握しておりました。  
ですが下記URLにある連想配列でのやり方を参考にすると実現可能かと思いましたがうまく動作せずに上記にあるエラーが出ています。

> **[\[JavaScript\]filter()で連想配列を指定条件で絞り込む - Qiita](https://qiita.com/HuntingRathalos/items/e0f2915a2497d3d02f0b)**
>
> はじめに今回は、JavaScriptのfilter()について学んだことをまとめておきたいと思います。filter()の基本構文の説明後、タイトルのサンプルコードを紹介します。目次1.fil…

回答頂いてから実装部分の解決を試みましたが進展はありませんでした。  
こちら都合で大変申し訳ないのですが、本日までにエラーを解決しないといけないため、回答をご教授いただけると幸いです。

以上、よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![TaroTanaka](https://sea1.discourse-cdn.com/flex015/user_avatar/community.cybozu.dev/tarotanaka/32/985_2.png) [@TaroTanaka](https://community.cybozu.dev/u/TaroTanaka)\
**Post date:** [2024 年 6 月 10 日午前 2:18 UTC](https://community.cybozu.dev/t/topic/9140/4 "2024-06-10T02:18:23Z")

</div>

まず、結論から回答させていただきますと、  
`let test = users.filter(p => p.id == numLoginId);`  
↓  
`let test = users.users.filter(p => p.id == numLoginId);`  
に修正すると、正しく動作するかと思います。

おそらく、ご返信いただいた、「連想配列」というのは、  
usersオブジェクトの中のusers配列が、オブジェクト配列（連想配列）になっているということだと思いますし、そちらについては正しく実装できております。

今回、  
`const users = await kintone.api(kintone.api.url('/v1/users', true), 'GET', {});`  
で取得したレスポンスを格納する変数をusersにしてしまったため、  
オブジェクトのキーと同じ名前で、紛らわしくなっていたので、  
`const respUsers = await kintone.api(kintone.api.url('/v1/users', true), 'GET', {});`  
とかにすると、もう少しわかりやすくなるかもしれません。

開発を続けていると、このエラーが出たのだったら、  
ここが違っているんだろうなと、わかってくると思いますので、  
頑張ってください。

---

<div class="post-metadata">

**Author:** ![kai](https://avatars.discourse-cdn.com/v4/letter/k/cc9497/32.png) [@kai](https://community.cybozu.dev/u/kai)\
**Post date:** [2024 年 6 月 10 日午前 2:34 UTC](https://community.cybozu.dev/t/topic/9140/5 "2024-06-10T02:34:35Z")

</div>

田中太郎様  
ご回答ありがとうございます。  
上記内容で解決しました。  
API取得したせいでアクセスする部分が違っていたのが理解できました。

今後の開発につなげられるように気を付けたいと思います。  
本当にありがとうございました。

以上、よろしくお願いいたします。
