18
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

javascript: オブジェクトの配列で存在チェック

Last updated at Posted at 2018-11-16

はじめに

オブジェクトの配列内のある項目について、存在チェックを行いたい機会があり、findIndex関数を使うと便利だったのでそのメモです。
*some関数での用法を追記しております。
@ttatsfさんありがとうございます!

文中で使用している、some関数、findIndex関数、アロー関数はES6以降対応なのでご留意ください。

some()で存在チェック

some関数は配列の中に条件を一つでも満たすものがあれば、trueを返します。
単純な存在チェックだけですと、こちらの方が良さそうです。
*@ttatsfさんありがとうございます!

const users = [
  {id:1, name:"Ichiro", language:"python"},
  {id:2, name:"Jiro", language:"ruby"},
  {id:3, name:"Saburo", language:"java"},
  {id:4, name:"Shiro", language:"python"}
];

// true
console.log(users.some(user => user.language === "python"));
// false
console.log(users.some(user => user.language === "php"));

findIndex()で存在チェック

実行例です。findIndexの仕様として、見つかった場合はインデックス番号を、見つからない場合は-1を返します。
*冗長だったコードを修正しました。
@ttatsfさんありがとうございます。

const users = [
  {id:1, name:"Ichiro", language:"python"},
  {id:2, name:"Jiro", language:"ruby"},
  {id:3, name:"Saburo", language:"java"},
  {id:4, name:"Shiro", language:"python"}
];

// true
console.log(users.findIndex(user => user.language === "python") != -1);
// false
console.log(users.findIndex(user => user.language === "php") != -1);

補足

以下のような書き方もできます。オブジェクトの構造が頭に入ってないと読みにくい気もしますが。。

// true
console.log(users.findIndex(({language}) => language === "python") != -1);

参考

MDN:Array.prototype.findIndex()
MDN: アロー関数

18
20
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?