2017-01-02 119 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'? –