3 回答
TA贡献1877条经验 获得超6个赞
您在这里面临的主要问题是,您无法在迭代列表时创建新的人群,并且被迫对新变量进行硬编码,例如const age3040 = []. 通常,您会使用一个对象来实现这一点,这样您就可以最终得到一个这样的对象。
const ranked = {
"20": ["Helia"],
"30": ["Bill", "Jon"],
// and so on
}
您可能会认为这是一个计数问题。在这种情况下,剩下要做的唯一一件事就是在计算出您需要什么后弄清楚人们属于哪个类别。
const ranked = {}
for (const [name, age] of mainArr) {
// a function that decides what key to give the person in that age bracket
const tier = decideTier(age)
const people = ranked[tier]
if (!people) {
// if a previous person with this age has not been seen before you'll
// have to create a new array with the person in it so that you can
// push new names in it the next time
ranked[tier] = [name]
} else {
people.push(name)
}
}
console.log(ranked["20"])
你在这里寻找的东西的一个例子叫做groupBybtw 并且可以在像Ramda这样的库中找到。
TA贡献1995条经验 获得超2个赞
您的代码中存在三个问题
ageCheck
根本没有使用||
应该&&
函数
checkAge
没有被调用所以你不会得到结果
给你举个例子,希望对你有帮助。
const arr1 = ['Sarah', 37];
const arr2 = ['Mike', 32];
const arr3 = ['Bill', 25];
const arr4 = ['Chris', 24];
const arr5 = ['Joe', 44];
const arr6 = ['Jesse', 33];
const arr7 = ['Jon', 28];
const arr8 = ['Michael', 55];
const arr9 = ['Jill', 59];
const arr10 = ['Helia', 4];
const mainArr = [arr1, arr2, arr3, arr4, arr5, arr6, arr7, arr8, arr9, arr10];
const reuslt = [{
range: '0-20',
names: []
}, {
range: '21-30',
names: []
}, {
range: '31-40',
names: []
}, {
range: '41-50',
names: []
}, {
range: '51-60',
names: []
}];
for (let index = 0; index < mainArr.length; index++) {
const item = mainArr[index];
if (item[1] > 0 && item[1] <= 20) {
reuslt[0].names.push(item[0]);
} else if (item[1] <= 30) {
reuslt[1].names.push(item[0]);
} else if (item[1] <= 40) {
reuslt[2].names.push(item[0]);
} else if (item[1] <= 50) {
reuslt[3].names.push(item[0]);
} else if (item[1] <= 60) {
reuslt[4].names.push(item[0]);
}
}
console.log(reuslt);
TA贡献1770条经验 获得超3个赞
使用 a if else if,你应该使用&¬||
像这样:
let age020 = []
let age2030 = []
let age3040 = []
let age4050 = []
let age5060 = []
mainArr.forEach(arr =>{
const age = arr[1]
if(age >= 0 && age <= 20){
age020.push(arr)
}else if(age >= 30 && age <= 40){
age3040.push(arr)
}
//... do same to other age range
})
console.log(age020)
console.log(age3040)
添加回答
举报