2017-01-02 50 views
2

我有對象的數組獲得從基於屬性陣列對象,說memberToChange.checkboxes:ICheckbox []是這樣的:使用Lodash _.find

enter image description here

現在,我有一個變量,說internalNumber:具有值「3419」的字符串。我想從internalNumber匹配label屬性的對象數組中獲取對象。最終,我想將該對象的value屬性設置爲true。

我的代碼是:

let checkboxes = _.find(scope.selectedMembers, (member: IMember) => member.member.uuid === memberId).checkboxes;  //gives me array of checkboxes. 
let checkboxToChange = _.find(memberToChange.checkboxes, function(checkbox: ICheckbox){ 
    return (checkbox.label === internalNumber); 
}); //gives me null, moreover, even a console.log inside the second find doesn't print. I'm thinking the two consecutive _.find statements are messing something up, not sure what. 

供參考,這是我的ICheckbox接口:

export interface ICheckbox { 
    label: string; 
    sublabel?: string; 
    value: boolean; 
    numberUuid: string; 
} 

我希望,對於internalNumber 3419,它應該返回我的第二個對象從數組。但它返回undefined。我不確定這裏發生了什麼事。 如果有更好的方法來查找和一個值設置爲true走而已,我會很高興地知道這一點。 任何幫助表示讚賞。謝謝。

更新:

使用JavaScript的濾波方法有人建議之後,我想這:(我的範圍被分配到這個)

scope.selectedMembers.filter(function(member) { 
    if (member.member.uuid === memberId) { 
     scope.memberCheckboxes = []; 
     console.log('found member'); //prints 
     scope.memberCheckboxes = member.checkboxes; 
     console.log(scope.memberCheckboxes); // print correctly, with checkboxes of the member 
     scope.memberCheckboxes.filter(function(checkbox) { 
     console.log('inside checkbox function'); //control doesnt even come here 
     if (checkbox.label === intNum) { 
      console.log('found checkbox'); // control doesnt come here 
     } 
     }); 
    } 
    }); 

在這裏,我不明白爲什麼第一個控制檯。記錄在scope.memberCheckboxes.filter裏面不打印?我在這裏錯過了很明顯的東西嗎

+0

號!==字符串? –

+1

兩者都是字符串。 –

+1

編輯我的問題來反映這一點。 –

回答

0

由於某種原因你memberToChange.checkboxes(或member.checkboxes在更新的問題)沒有的元素。

這就是爲什麼它不工作,因爲你的代碼是正確的,否則唯一的解釋。 console.log('inside checkbox function')不打印的事實證實了這一點。

+0

但是當我做console.log(memberToChange.checkboxes)時,它顯示我預期的內容。它不是空的。 –

+0

你是對的,那就是發生了什麼事。但是,當它正好打印值時,我沒有看到它是如何突然沒有元素的。 –

+0

關於你使用_.find()的第一個建議,你真的代碼中的某處是否在'memberToChange.checkboxes'中指定了'checkboxes'? –