2017-11-04 7 views
-1

私のタイトルが正しく何をしたいのか分かりません。基本的には、オブジェクトを含むオブジェクトからプロパティを抽出する関数が必要です。私は同じクラスの多くのオブジェクトを含むさまざまな配列をループし、特定の値を抽出する必要があります。最終的なコードで未知数のネストされたオブジェクトプロパティを関数に渡す

myarray1[ 
0: 
    object1 = { 
     objectProp1: { 
      objectProp1Prop1:"Hello", 
      objectProp1Prop2:"Goodbye", 
      objectProp1Prop3:{ 
       objectProp1Prop3Prop1: "Come here", 
       objectProp1Prop3Prop2: "Go away" 
      }, 
     }, 
     objectProp2: "Yo", 
     objectProp3: "Seeya", 
    } 
1: 
    object2 = { same as object1 but with other property values } 
]; 

myarray2[ 
0: { different type of object with a different set of nested properties that the function can extract } 
1: { idem } 
]; 

function extractProperty(objectArray, property) { 
    //How do I write this code? 
    propertyvalue = objectArray.property; 

    return propertyvalue; 
} 

extractProperty(myarray1[0], object.objectProp3) = "Seeya" 
extractProperty(myarray1[0], object.objectProp1.objectProp1Prop1) = "Hello" 
extractProperty(myarray1[0], object.objectProp1.objectProp1Prop3.objectProp1Prop3Prop1) = "Come here" 

機能は、すべての配列のキーをループことができるように、元の配列内のすべてのオブジェクトから選択されたプロパティを含む配列リストを作成する必要があるが、私は管理することができます。配列内のオブジェクトから抽出する必要のある特定のプロパティを、どのように行うかわからない関数に送信することです。

プロパティに「パス」を付けて関数に渡してそこに使う一般的な方法はありますか?どうやって?

ありがとうございました!

+0

いいえ、関数に抽出する必要がある特定のプロパティを送信してそこから使用する方法がわからないためです。それは明らかに問題ではなかったか? –

+0

申し訳ありませんが、私の上記のコメントは、その後、著者または改造者のいずれかによって削除されたものに対する回答でした。 –

答えて

-1

あなたは再帰を試みることができる:

object1 = { 
     objectProp1: { 
      objectProp1Prop1:"Hello", 
      objectProp1Prop2:"Goodbye", 
      objectProp1Prop3:{ 
       objectProp1Prop3Prop1: "Come here", 
       objectProp1Prop3Prop2: "Go away" 
      }, 
     }, 
     objectProp2: "Yo", 
     objectProp3: "Seeya", 
    }; 

object2 = { 
    objectProp1: 'test1', 
    objectProp2: 'test2' 
} 

var myArray = [object1, object2]; 

function getProp(objArray, prop) { 
    for(var key in objArray) { 
     if (key == prop) 
      return objArray[key]; 
     if (typeof objArray[key] == 'object') 
      return getProp(objArray[key], prop); 
    } 
} 

//test 
document.getElementsByTagName('h1')[0].innerHTML = getProp(myArray[0],'objectProp1Prop3Prop1'); 

私はあなたがそれをしようとするためのフィドルを追加しました:https://jsfiddle.net/afabbro/vrVAP/

-1

は私への代入のように見えます。だから私はあなたにコードを教えてくれませんが、そのアプローチについて説明します。

  1. まずあなたが
  2. はその後反復現在のオブジェクトの参照を保持.
  3. のように、あなたは区切り文字に基づいて文字列を分割する必要がありますあなたの関数で
  4. 文字列としてプロパティ名を渡す必要があります#2から取得したすべてのプロパティ名に
  5. 現在のオブジェクトから現在のプロパティ名を取得し、現在のオブジェクトを戻り値に置き換えます。
  6. 最後に現在のオブジェクトを返します。

注:間にいくつかのバリデーションを追加する必要があります。 )

+0

ご返信ありがとうございます。私はコードを教えるために趣味としてやっています。私はあなたのアプローチを試み、私がそれを理解できるかどうかを見ます! –

関連する問題