繁体   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