2017-08-14 8 views
0

私はJavascriptで新しいです。私はオブジェクトを持っており、それを変数と比較する必要があり、条件が満たされれば何かします。私が必要とするフィールドにどのようにアクセスできますか?オブジェクトを変数にスライスする方法

私は、この変数を取った:ここ$scope.acceptedProjects['hash'][key]['title']

は私のコードです:

$scope.overlappingDates = overlappingDates; 
$scope.acceptedProjects = invitationService.acceptedProjects; 

for(var value in $scope.overlappingDates) { 
    for(var key in $scope.acceptedProjects['hash']) { 
     console.log($scope.overlappingDates); 
     console.log($scope.acceptedProjects['hash'][key]['title']); 
    } 
} 
return; 

私は$scope.overlappingDates[value]をしようとすると、それは を返し、私は必要スライスまたはこの巨大な名前をvarに変換する何かをしてください。

+1

あなたはどのデータ構造を操作しているのかはっきりしていないし、期待される結果は何か。何らかの条件を満たす配列項目に対してアクションを実行するには、 'for'ループと' if'文の組み合わせを使うか、配列メソッド 'filter'を使って必要な項目をフィルタし、' forEach'を使って項目をループさせ、 。 –

+0

overlap1の値を取得したり、overlap1配列の要素のフィールドを取得することについての質問ですか? –

+0

@Michael Kapustey、質問については変数値overlap1を指定します。 –

答えて

0

達成したいことがあるかどうかわかりません。しかし、この抽象的な例を一歩一歩見て、ここで何が起こっているのかを理解してください。私は、これはあなたがオブジェクトのプロパティと配列項目にアクセスすると、より慣れるために役立つことを願っています:

var data = { 
    prop1: [ 
     {meaning_property: 1}, 
     {meaning_property: 2}, 
     {meaning_property: 3} 
    ], 
    prop2: [ 
     {meaning_property: 4}, 
     {meaning_property: 5}, 
     {meaning_property: 6} 
    ] 
}; 

var found_field_name = null; 
var found_item_index = -1; 

var looking_for_value = 5; 

// loop through data's fields 
for (var prop in data) { 
    // access the value of object's field prop1, prop2 etc... 
    var arr = data[prop]; 
    // loop through array 
    for (var i = 0; i < arr.length; i++) { 
     var item = arr[i]; 
     // item property value meets the condition? 
     if (item.meaning_property === looking_for_value) { 
      // remember field name for array 
      found_field_name = prop; 
      // remember item index in array 
      found_item_index = i; 
      // break the cycle here, we've found what we need 
      break; 
     } 

     /** 
     * item.meaning_property you can also access in different ways 
     * arr[i].meaning_property 
     * data[prop][i].meaning_property 
     * data["prop1"][0].meaning_property 
     * data.prop1[0].meaning_property 
     */ 
    } 
} 

// if we found something during previos loop 
if (found_field_name !== null) { 
    // access the corresponding array 
    var arr = data[found_field_name]; 
    // access the corresponding item 
    var item = arr[found_item_index]; 
    console.log("Item found", found_field_name, found_item_index, arr, item); 
} 
else { 
    console.log("No items met the criteria"); 
} 

はあなたが最終的にあなたのタスクを解決する方法を見つけることができます、私は確信している、このコードで遊ぶようにしてください。

0

私が見るブラウザ出力からは、overlap1はオブジェクトを内部に含む配列です。オブジェクト値を取得する方法を教えてください

for (var i = 0; i < overlap1.length; i++;){ //iterate over all objects inside array 
    var el = overlap1[i]; 
    //get variables of object 
    var projectDateId = el.project_date_id// or el["project_date_id"]; 
    var projectsProjectId = el.projects_project_id// or el["projects_project_id"]; 
    //do something with this variables 
} 
関連する問題