2017-01-02 9 views
2

を_.find取得、memberToChange.checkboxesを言う:ICheckbox []は次のように:今がLodashを使用して、プロパティに基づいて配列からオブジェクトが、私はオブジェクトの配列を持っている

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のために、それは、アレイからの私の第2の目的を返す必要があることを期待します。しかし、それは未定義に戻ります。私はここで何が起こっているのか分かりません。 値を見つけて、真に値を設定するより良い方法があれば、私もそれを知ってうれしいです。 何か助けていただければ幸いです。ありがとうございました。

更新:

誰かの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

number!== string? –

+1

両方とも文字列です。 –

+1

それを反映するために私の質問を編集しました。 –

答えて

0

memberToChange.checkboxes(または更新された質問のmember.checkboxes)には要素がありません。

あなたのコードが正しくなければ、それがうまくいかない理由は唯一の説明です。 console.log('inside checkbox function')が印刷されないということは、それを確認します。

+0

しかし、console.log(memberToChange.checkboxes)を実行すると、予想される内容が表示されます。それは空ではない。 –

+0

あなたはそうです、それは起こっていることです。しかし、私はちょうどその値を正確に印刷するときに要素が突然なくなっていないのを見ていません。 –

+0

_.find()を使った最初の提案に関しては、実際のコードのどこかで 'checkboxes'を' memberToChange.checkboxes'に割り当てますか? –

関連する問題