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

JavaScriptでオブジェクトの配列に全大陸が存在するかを確認する方法

問題

ある人々が所属する大陸に関するデータを含む、オブジェクトの配列を受け取るJavaScript関数を作成する必要があります。

この関数は、配列内に6つの異なる大陸(アフリカ、南アメリカ、北アメリカ、ヨーロッパ、アジア、オーストラリア)がすべて見つかった場合には true を返し、そうでない場合には false を返すものとします。

コード例

以下がその実装コードです −

const people = [
               { firstName: 'Dinesh', lastName: 'A.', country: 'Algeria', continent: 'Africa', age: 25, language: 'JavaScript' },
               { firstName: 'Ishan', lastName: 'M.', country: 'Chile', continent: 'South America', age: 37, language: 'C' },
               { firstName: 'Rohit', lastName: 'X.', country: 'China', continent: 'Asia', age: 39, language: 'Ruby' },
               { firstName: 'Manpreet', lastName: 'P.', country: 'Andorra', continent: 'Europe', age: 55, language: 'Ruby' },
               { firstName: 'Rahul', lastName: 'Q.', country: 'Australia', continent: 'Australia', age: 65, language: 'PHP' },
               ];
const checkAllContinent = (arr = []) => {
    const all = ['Africa', 'South America', 'North America', 'Europe', 'Asia', 'Australia'];
    const listed = arr.map(obj => {
        return obj.continent;
    });
    for(let i = 0; i < listed.length; i++){
        const cont = listed[i];
        const ind = all.indexOf(cont);
        if(ind !== -1){
            all.splice(ind, 1);
        };
    };
    return all.length === 0;
};
console.log(checkAllContinent(people));

コードの解説

この関数の処理の流れは以下のとおりです。

まず、世界の6大陸の名称を格納した配列 all を定義します。次に、map() メソッドを使って、引数として渡されたオブジェクト配列から各大陸名だけを抽出した新しい配列 listed を作成します。

続いてforループで listed の各要素を順に確認し、その大陸が all に存在する場合は indexOf() で位置を特定し、splice() メソッドによって all から削除していきます。

最終的に all の長さが0になっていれば、すべての大陸がデータ内に存在することを意味するため true を返します。要素が残っている場合は false が返されます。

出力

false

上記のサンプルデータには北アメリカ(North America)出身の人物が含まれていないため、結果は false となります。もし6つの大陸すべてのデータが揃っていれば、出力は true になります。

  1. JavaScriptでIDごとにオブジェクトの配列をグループ化する方法

    JavaScriptでオブジェクトの配列をidなどの特定のキーごとにグループ化したい場合、reduce()メソッドを使うと簡潔に実装できます。この記事では、どのプロパティにも対応できる汎用的なgroupBy関数を作成し、実際のサンプルコードとともにその仕組みを詳しく解説します。 reduce()によるグループ化の考え方 reduce()は、配列の各要素を順番に処理しながら、1つの累積値(ここではオブジェクト)を組み立てていくメソッドです。各要素からキーの値を取り出し、その値がまだ結果オブジェクトに存在しなければ新しい配列を作成して、そこへ要素を追加していくことでグループ化を実現します。 サ

  2. JavaScriptのオブジェクト配列に配列メソッドを適用する方法

    JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8