2017-08-14 42 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 
}