我有一个对象数组,比如memberToChange.checkboxes:ICheckbox []就像这样:
现在,我有一个变量,比如internalNumber:string,其值为" 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
}
});
}
});
在这里,我不明白为什么第一个console.log里面的scope.memberCheckboxes.filter没有打印?我错过了一些明显的东西吗?
答案 0 :(得分:0)
由于某种原因,您的memberToChange.checkboxes
(或更新后的问题中的member.checkboxes
)没有元素。
这是唯一的解释,为什么它不起作用,因为你的代码是正确的。 console.log('inside checkbox function')
不打印的事实证实了这一点。