Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从列表键中提取值_Javascript_Arrays_Reactjs_Hashmap - Fatal编程技术网

Javascript 从列表键中提取值

Javascript 从列表键中提取值,javascript,arrays,reactjs,hashmap,Javascript,Arrays,Reactjs,Hashmap,我想返回公司角色的分配学分,其值与此处匹配。但是返回的值是:[undefined,undefined,undefined,“10000.0”] 在这种情况下,未定义的值是因为公司角色的值不匹配。我可以删除所有未定义的值,然后只使用值10000.0,但是有更优雅的方法吗 编辑:if(cr.id==id)条件仅对单个值始终为真。编辑:仅尝试 getEmployeeCredits(id) { if (this.state.company_roles) { re

我想返回公司角色的分配学分,其值与此处匹配。但是返回的值是:
[undefined,undefined,undefined,“10000.0”]

在这种情况下,未定义的值是因为公司角色的值不匹配。我可以删除所有未定义的
值,然后只使用值
10000.0
,但是有更优雅的方法吗

编辑:if(cr.id==id)
条件仅对单个值始终为真。

编辑:仅尝试

 getEmployeeCredits(id) {
        if (this.state.company_roles) {
            return this.state.company_roles.map(function (cr, i) {
                if (cr.id  === id) {
                    return cr.assigned_credits
                }
            }.bind(this));
        }
    }
获取数组后,可以使用
array.prototype.filter

例如:

编辑:只是尝试

 getEmployeeCredits(id) {
        if (this.state.company_roles) {
            return this.state.company_roles.map(function (cr, i) {
                if (cr.id  === id) {
                    return cr.assigned_credits
                }
            }.bind(this));
        }
    }
获取数组后,可以使用
array.prototype.filter

例如:


为什么不直接在公司角色上使用
过滤器

var data = [42, 21, undefined, 50, 40, undefined, 9];

data = data.filter(function( element ) {
   return element !== undefined;
});

为什么不直接在公司角色上使用
过滤器

var data = [42, 21, undefined, 50, 40, undefined, 9];

data = data.filter(function( element ) {
   return element !== undefined;
});

如果要查找数组中的单个值,请使用
array.prototype.find

根据您的示例进行调整:

const foundCompanyRoleItem=this.state.company\u roles.find(crItem=>crItem.id==id);
返回foundCompanyRoleItem.assigned_学分

这将始终返回一个匹配值,而不是像
.filter
那样返回一个数组


注:我建议您的项目也使用ES6语法。在上面的示例中,您可以看到好处,因为我的示例使用了ES6中引入的箭头函数。它使表达式更简洁、更合理。

如果要查找数组中的单个值,请使用
array.prototype.find

根据您的示例进行调整:

const foundCompanyRoleItem=this.state.company\u roles.find(crItem=>crItem.id==id);
返回foundCompanyRoleItem.assigned_学分

这将始终返回一个匹配值,而不是像
.filter
那样返回一个数组


注:我建议您的项目也使用ES6语法。在上面的示例中,您可以看到好处,因为我的示例使用了ES6中引入的箭头函数。它使表达式更简洁、更合理。

这是因为if语句只对一个值为true,其余的则隐式返回未定义的值

getEmployeeCredits(id) {
  if (this.state.company_roles) {
    return this.state.company_roles.filter(cr => cr.id  === id);
  }
}
所以要解决这个问题,你需要

getEmployeeCredits(id) {
            if (this.state.company_roles) {
                return this.state.company_roles.map(function (cr, i) {
                    if (cr.id  === id) {
                        return cr.assigned_credits
                    }
                    else 
                       return undefined;
                }.bind(this));
            }
        }

这是因为if语句只对一个值为true,其余的则隐式返回undefined

getEmployeeCredits(id) {
  if (this.state.company_roles) {
    return this.state.company_roles.filter(cr => cr.id  === id);
  }
}
所以要解决这个问题,你需要

getEmployeeCredits(id) {
            if (this.state.company_roles) {
                return this.state.company_roles.map(function (cr, i) {
                    if (cr.id  === id) {
                        return cr.assigned_credits
                    }
                    else 
                       return undefined;
                }.bind(this));
            }
        }

Array.map
将一个数组中的所有值转换为另一个数组,两个数组的长度始终相同。如果您想像上面提到的那样从数组中提取单个对象,
array.filter
array.find
会更好。请记住,
Array.find
是ES6标准的一部分,这意味着某些浏览器可能不支持它。

Array.map
将一个数组中的所有值转换为另一个数组,并且两个数组的长度始终相同。如果您想像上面提到的那样从数组中提取单个对象,
array.filter
array.find
会更好。请记住,
Array.find
是ES6标准的一部分,这意味着某些浏览器可能不支持它。

没错,我可以从返回的
cr.assigned\u credits
中删除未定义的值。我想知道如果if条件为真,是否有办法只返回
assigned_credits
的值,然后它只返回单个值而不是arraySure!让我试试。没错,我可以从返回的
cr.assigned\u credits
中删除未定义的值。我想知道如果if条件为真,是否有办法只返回
assigned_credits
的值,然后它只返回单个值而不是arraySure!让我试试。这似乎是实现我想要的最干净的方法。谢谢,我将研究在我的项目中使用ES6语法。这似乎是实现我想要的最干净的方式。谢谢,我将研究在我的项目中使用ES6语法。看起来确实干净多了