0
1

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(ES6) Objectのプロパティのそれぞれの値が存在するか確認する

Last updated at Posted at 2019-06-10
needClear() {
  return (Object.values(this.form).filter(elem => elem).length > 0)
}

コメントを頂いたので some パターンを追記。すっきり〜

needClear() {
  return (Object.values(this.form).some(elem => elem))
}

ユースケースは、Vue.jsなどで

<input v-model="form.name">
<input v-model="form.email">
<select v-model="form.lang">
<checkbox v-model="form.loveMe">

のような簡単なフォームをつくったとき、どれかに値が入っていたらクリアボタンを表示したい。みたいな時。

(以下はVueの場合のバインディングの仕方)

<button v-show="needClear">clear</button>

としてる。

JavaScriptの真偽判定では、 0 false もfalseとなってしまうが、↑のユースケースなら <input type="number"> でも文字列が入ってくるし、checkboxでもfalseならクリアする必要がないことがほとんどなのでとりあえず問題はない。

もし 0false にも対応したい場合は

needClear() {
  return (Object.values(this.form).filter(elem =>{
    (elem === false || elem === 0 || elem) return elem
  }).length > 0)
}

とかなら対応可能。

けど、走査しちゃうしこんなのでいいのかな。同じ前提条件でももっといい感じの方法がありそう。
(そもそも form.name みたいに入れ子にするなよ、というのはごもっとも)

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?