簡體   English   中英

使用Lodash _.find根據屬性從數組獲取對象

[英]Get object from array based on property using Lodash _.find

我有一個對象數組,例如memberToChange.checkboxes:ICheckbox []像這樣:

在此處輸入圖片說明

現在,我有一個變量,例如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,它應該向我返回數組中的第二個對象。 但是它返回未定義的。 我不確定這是怎么回事。 如果有更好的方法可以一次性查找並將值設置為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內部的第一個console.log無法打印? 我在這里錯過明顯的東西嗎?

由於某種原因,您的memberToChange.checkboxes (或更新的問題中的member.checkboxes )沒有任何元素。

這是為什么它不起作用的唯一解釋,因為您的代碼是正確的。 console.log('inside checkbox function')無法打印的事實證實了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM