检查某个年龄段
Checking Between a Certain Age
我有一个 if
声明,如下所示:
function isMaleBetween(value, index, array) {
maleBetween = [];
array.forEach(function (element) {
if (element.active === filters.active &&
element.gender === filters.gender &&
element.age === filters.age.min(18) &&
element.age === filters.age.max(30)) {
console.log(element);
}
});
}
这是我的用户所在的class。我检查过所有名称、ID 和过滤器都在此处:
export const UserConfig = {
test_case_1: {
getUsers: () => UserConfig.users,
filters: {
active: true
}
},
test_case_2: {
getUsers: () => UserConfig.users,
filters: {
active: true,
gender: 'female'
}
},
test_case_3: {
getUsers: () => UserConfig.users,
filters: {
active: false,
gender: 'male',
age: {
min: 18,
max: 30
}
}
},
users:[
{
"_id": "597c79908b3baf49d88204db",
"age": 17,
"name": "Mack Roach",
"gender": "male",
"active": false
},
{
"_id": "597c799049f0cf0a330d58dd",
"age": 22,
"name": "Guy Howe",
"gender": "male",
"active": true
},
{
"_id": "597c79908e284bdc450a4241",
"age": 22,
"name": "Marie Camacho",
"gender": "female",
"active": true
},
{
"_id": "597c79906b710574bc79c970",
"age": 21,
"name": "Hewitt Buckley",
"gender": "male",
"active": true
},
{
"_id": "597c7990ab221a09c6671ff5",
"age": 19,
"name": "Jeannine Beard",
"gender": "female",
"active": true
},
{
"_id": "597c7990f807c9cb122c52ea",
"age": 20,
"name": "Mooney Shepard",
"gender": "male",
"active": false
},
{
"_id": "597c7990fe0487381569b455",
"age": 18,
"name": "Norman Hardy",
"gender": "male",
"active": false
}
]
}
但是,当我 运行 这样做时,它不会遍历我的最少 18 岁和最多 30 岁的男性数组。这个说法是错误的还是我遗漏了什么?
问题是你把它们当作函数来调用。您还需要使用比较运算符。
element.age >= filters.age.min && element.age <= filters.age.max
如果测试用例没有最小值或最大值,要给它们默认值,您可以使用 OR 运算符:
element.age >= (filters.age.min || 18) && element.age <= (filters.age.max || 30)
您可以使用filter
let array=[ { "_id": "597c79908b3baf49d88204db", "age": 17, "name": "Mack Roach", "gender": "male", "active": false }, { "_id": "597c799049f0cf0a330d58dd", "age": 22, "name": "Guy Howe", "gender": "male", "active": true }, { "_id": "597c79908e284bdc450a4241", "age": 32, "name": "Marie Camacho", "gender": "female", "active": true }];
let filtered_array=array.filter(a=>a.age >=18 && a.age<=30 && a.gender==='male');
filtered_array.forEach(function (element) {
console.log(element);
});
如果您尝试使用 declerative 方式选择对象,这是另一个视角。
var ge = UserConfig.users.filter((object)=> object.gender === 'male')
.filter((male)=> male.age >= 18 && male.age <= 30)
console.log(ge);
过滤男性,然后过滤年龄。执行到最后的,会放在全新的列表里,你可以登录看看它做了什么。
我有一个 if
声明,如下所示:
function isMaleBetween(value, index, array) {
maleBetween = [];
array.forEach(function (element) {
if (element.active === filters.active &&
element.gender === filters.gender &&
element.age === filters.age.min(18) &&
element.age === filters.age.max(30)) {
console.log(element);
}
});
}
这是我的用户所在的class。我检查过所有名称、ID 和过滤器都在此处:
export const UserConfig = {
test_case_1: {
getUsers: () => UserConfig.users,
filters: {
active: true
}
},
test_case_2: {
getUsers: () => UserConfig.users,
filters: {
active: true,
gender: 'female'
}
},
test_case_3: {
getUsers: () => UserConfig.users,
filters: {
active: false,
gender: 'male',
age: {
min: 18,
max: 30
}
}
},
users:[
{
"_id": "597c79908b3baf49d88204db",
"age": 17,
"name": "Mack Roach",
"gender": "male",
"active": false
},
{
"_id": "597c799049f0cf0a330d58dd",
"age": 22,
"name": "Guy Howe",
"gender": "male",
"active": true
},
{
"_id": "597c79908e284bdc450a4241",
"age": 22,
"name": "Marie Camacho",
"gender": "female",
"active": true
},
{
"_id": "597c79906b710574bc79c970",
"age": 21,
"name": "Hewitt Buckley",
"gender": "male",
"active": true
},
{
"_id": "597c7990ab221a09c6671ff5",
"age": 19,
"name": "Jeannine Beard",
"gender": "female",
"active": true
},
{
"_id": "597c7990f807c9cb122c52ea",
"age": 20,
"name": "Mooney Shepard",
"gender": "male",
"active": false
},
{
"_id": "597c7990fe0487381569b455",
"age": 18,
"name": "Norman Hardy",
"gender": "male",
"active": false
}
]
}
但是,当我 运行 这样做时,它不会遍历我的最少 18 岁和最多 30 岁的男性数组。这个说法是错误的还是我遗漏了什么?
问题是你把它们当作函数来调用。您还需要使用比较运算符。
element.age >= filters.age.min && element.age <= filters.age.max
如果测试用例没有最小值或最大值,要给它们默认值,您可以使用 OR 运算符:
element.age >= (filters.age.min || 18) && element.age <= (filters.age.max || 30)
您可以使用filter
let array=[ { "_id": "597c79908b3baf49d88204db", "age": 17, "name": "Mack Roach", "gender": "male", "active": false }, { "_id": "597c799049f0cf0a330d58dd", "age": 22, "name": "Guy Howe", "gender": "male", "active": true }, { "_id": "597c79908e284bdc450a4241", "age": 32, "name": "Marie Camacho", "gender": "female", "active": true }];
let filtered_array=array.filter(a=>a.age >=18 && a.age<=30 && a.gender==='male');
filtered_array.forEach(function (element) {
console.log(element);
});
如果您尝试使用 declerative 方式选择对象,这是另一个视角。
var ge = UserConfig.users.filter((object)=> object.gender === 'male')
.filter((male)=> male.age >= 18 && male.age <= 30)
console.log(ge);
过滤男性,然后过滤年龄。执行到最后的,会放在全新的列表里,你可以登录看看它做了什么。