JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列内のnull値や空文字を含むオブジェクトを除外する方法

ここでは、会社の従業員情報を格納したオブジェクトの配列を例に考えてみましょう。しかし、この配列には「名前が空文字列になっている」「キーにfalse相当の値が入っている」といった不正なデータ(不良データ)が混在しています。

そこで私たちの課題は、配列を受け取り、name キーの値が nullundefined、あるいは空文字列であるオブジェクトを取り除き、新しい配列を返す関数を作成することです。

対象となるオブジェクト配列の例

let data = [{
    "name": "Ramesh Dhiman",
    "age": 67,
    "experience": 45,
    "description": ""
}, {
        "name": "",
        "age": 31,
        "experience": 9,
        "description": ""
}, {
        "name": "Kunal Dhiman",
        "age": 27,
        "experience": 7,
        "description": ""
}, {
        "name": "Raman Kumar",
        "age": 34,
        "experience": 10,
        "description": ""
}, {
        "name": "",
        "age": 41,
        "experience": 19,
        "description": ""
    }
]

それでは、この処理を行う関数のコードを見ていきましょう。

実装コード

ポイントは、配列メソッドの filter() を使うことです。コールバック関数内で el.name をそのまま返すと、name の値が空文字列・nullundefined など falsy(偽値)である要素は自動的に除外されます。これはJavaScriptの真偽値への暗黙的な型変換を利用した、簡潔で実用的なテクニックです。

let data = [{
    "name": "Ramesh Dhiman",
    "age": 67,
    "experience": 45,
    "description": ""
}, {
        "name": "",
        "age": 31,
        "experience": 9,
        "description": ""
}, {
        "name": "Kunal Dhiman",
        "age": 27,
        "experience": 7,
        "description": ""
}, {
        "name": "Raman Kumar",
        "age": 34,
        "experience": 10,
        "description": ""
}, {
        "name": "",
        "age": 41,
        "experience": 19,
        "description": ""
    }
]
const filterUnwanted = (arr) => {
    const required = arr.filter(el => {
      return el.name;
    });
    return required;
};
console.log(filterUnwanted(data));

実行結果

コンソールには次のように出力されます。name が空文字列だった2つのオブジェクトが除外され、有効なデータだけが残っているのが確認できます。

[
    { name: 'Ramesh Dhiman', age: 67, experience: 45, description: '' },
    { name: 'Kunal Dhiman', age: 27, experience: 7, description: '' },
    { name: 'Raman Kumar', age: 34, experience: 10, description: '' }
]

補足:より明示的に判定したい場合

return el.name; のような省略記法は便利ですが、意図を明確にしたい場合は次のように書くこともできます。

const filterUnwanted = (arr) => arr.filter(el =>
  el.name !== null && el.name !== undefined && el.name !== ''
);

どちらの書き方でも結果は同じですが、プロジェクトのコーディング規約や可読性の要件に応じて使い分けるとよいでしょう。

  1. JavaScriptで配列内オブジェクトのプロパティ名を置き換える方法

    JavaScriptでオブジェクト配列のプロパティ名を置き換える方法 JavaScriptでは、map()メソッドを活用することで、配列に含まれる各オブジェクトのプロパティ名を別の名前に簡単に置き換えることができます。map()は元の配列を変更せずに新しい配列を生成するため、安全かつ効率的なデータ変換処理に適しています。 以下は、オブジェクト配列のプロパティ名 name を fullName に置き換えるサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta

  2. JavaScriptでnull・空のオブジェクトを含む配列に値を割り当てる方法

    JavaScriptでは、forEach()メソッドとObject.keys()メソッドを組み合わせることで、nullや空のオブジェクトを含む配列に対して効率的に値を割り当てることができます。本記事では、実際のコード例を交えながら、その具体的な実装方法をわかりやすく解説します。 サンプルコード 以下は、JavaScriptを使用してnull/空のオブジェクトを持つ配列に値を割り当てるコード例です。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&qu