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

オブジェクトのすべてのプロパティがJavaScriptで再帰的に同じであるかどうかを確認するにはどうすればよいですか?


たとえば、ネストされたオブジェクトを受け入れ、すべてのキーが同じ値を持っているかどうかに応じてブール値を返すisSame()などの関数を作成する必要があるとします。すべてのキーを言うときは、次のようなすべての最後のキーを意味します。キーの値としてネストされたオブジェクトがある場合は、ネストされたオブジェクトの最後までトラバースして、その値を確認する必要があります。

例-オブジェクトが-

の場合
const obj = {
   a: 1,
   b: 1,
   c: {
      aa: 1
   }
};

次に、すべてのエンドキーの値が同じであるため、関数はtrueを返す必要があります(1)。したがって、この問題の再帰的な解決策を書いてみましょう。

const obj = {
   a: 1,
   b: 1,
   c: {
      aa: 3
   }
};
const allSame = (obj, value) => {
   const keys = Object.keys(obj);
   for(let i = 0; i < keys.length; i++){
      if(typeof obj[keys[i]] === "object" &&
      !Array.isArray(obj[keys[i]])){
         return allSame(obj[keys[i]], value);
      };
      if(!value){
         value = obj[keys[i]];
         continue;
      }
      if(obj[keys[i]] !== value){
         return false;
      };
   };
   return true;
}
console.log(allSame(obj));
console.log(allSame({ a: 1, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: { x: 1 }, b: 1, c: { aa: 1 } }));
console.log(allSame({ a: 1, b: 1, c: { aa: 2 } }));

出力

コンソールの出力は-

になります
false
true
true
false

  1. JavaScriptを使用して同じ配列内の配列の要素を複製するにはどうすればよいですか?

    以下は、同じ配列内の配列の要素を複製するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" > <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &nbs

  2. オブジェクトがJavaScriptのクラスのインスタンスであるかどうかを確認するにはどうすればよいですか?

    以下は、オブジェクトがJavaScriptのクラスのインスタンスであるかどうかを確認するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title>