我知道reduce 是Javascript 中非常强大的数组方法,并且看过很多示例,但无法使用它来完成下面的任务。
按年龄对人的统计对象进行分组,其中年龄差异不得大于 5,且每组最多只能有 3 人。
我已经能够使用下面的代码实现它
const immutable = require('../fixtures/inputs/input')
const edge = require('../fixtures/inputs/edge-input')
/**
* This is the entry point to the program
*
* @param {any} input Array of student objects
*/
function classifier(input) {
// console.log(input)
// let returnedInput = []
let newInput = JSON.parse(JSON.stringify(input));
let exampleOutput = {
}
if (!Array.isArray(newInput)) {
throw new Error("invalid")
}
if (newInput.length < 1) {
exampleOutput = { noOfGroups: 0 }
}
function compare(a, b) {
const { age: ageA, regNo: regNoA } = a
const { age: ageB, regNo: regNoB } = b
// const ageA = a.age
// const ageB = b.age
let comparison = 0;
if (ageA > ageB) {
comparison = 1;
} else if (ageA < ageB) {
comparison = -1;
}
return comparison
}
const ages = newInput.map(function (each) {
let datDob = new Date(each.dob).getFullYear()
return each.age = new Date().getFullYear() - datDob
})
sortedInput = newInput.sort(compare)
// console.log(sortedInput)
const getMember = (arg) => {
let memArray = []
// console.log(arg)
if (arg.length == 1) {
return arg
}
let i = 0;
let j = 1;
// console.log(arg)
// console.log(arg.length)
while (i <= arg.length) {
while (j < 3) {
// console.log(arg[j])
if (arg[j]) {
if ((arg[j].age - arg[i].age) <= 5) {
memArray.push(arg[j])
}
}
j++
}
memArray.push(arg[i])
i++
return memArray
}
}
}
一只名叫tom的猫
相关分类