在我的下划线函数中过滤掉数组?
Filter out for arrays in my function in underscore?
如果profile.team_member_designations 是一个数组,运行s 下面的代码。我想添加一个条件来过滤或检查 profile_member_designations 是否是一个数组,因为如果它是一个字符串,我不希望代码为 运行。本质上,就在 map 函数之前,我想通过代码过滤掉仅 [=17=] 的数组。我该怎么做?
JS
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members) {
teamDesignations = _.chain(profile.team_members)
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};
替换if条件如下:
if (profile.team_members && (profile.team_members instanceof Array)){
解决方案
使用 Array.isArray.
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members && Array.isArray(profile.team_members)) {
teamDesignations = _.chain(profile.team_members)
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};
Array.isArray returns 当参数为数组时为真。它也有很好的browser support。
如果我没有正确理解你的问题,你想要这样的东西。
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members) {
teamDesignations = _.chain(profile.team_members)
.filter(_.compose(_.isArray, _.property('team_member_designations')))
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};
如果profile.team_member_designations 是一个数组,运行s 下面的代码。我想添加一个条件来过滤或检查 profile_member_designations 是否是一个数组,因为如果它是一个字符串,我不希望代码为 运行。本质上,就在 map 函数之前,我想通过代码过滤掉仅 [=17=] 的数组。我该怎么做?
JS
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members) {
teamDesignations = _.chain(profile.team_members)
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};
替换if条件如下:
if (profile.team_members && (profile.team_members instanceof Array)){
解决方案
使用 Array.isArray.
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members && Array.isArray(profile.team_members)) {
teamDesignations = _.chain(profile.team_members)
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};
Array.isArray returns 当参数为数组时为真。它也有很好的browser support。
如果我没有正确理解你的问题,你想要这样的东西。
var getTeamDesignations = function(profile) {
//Designations for a single team member
var teamDesignations = [];
if (profile.team_members) {
teamDesignations = _.chain(profile.team_members)
.filter(_.compose(_.isArray, _.property('team_member_designations')))
.map(_.property('team_member_designations'))
.flatten()
.uniq()
.value();
}
return teamDesignations;
};