我有对象的数组获得从基于属性阵列对象,说memberToChange.checkboxes:ICheckbox []是这样的:使用Lodash _.find
现在,我有一个变量,说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里面不打印?我在这里错过了很明显的东西吗
号!==字符串? –
两者都是字符串。 –
编辑我的问题来反映这一点。 –