Javascript для цикла и уменьшения. Это верно

1

Я новичок в JavaScript, поэтому я пытался найти способы понять больше. Я создаю коды двумя способами. Для циклов и функций более высокого порядка, используя методы массива, такие как уменьшение, отображение, фильтр и т.д. Я собираюсь опубликовать массив, код сокращения и циклы. Может ли кто-нибудь увидеть, правильно ли я делаю цикл for?

var people = [
{ name: "Jesse", age: 32, gender: "male" },
{   name: "Tommi", age: 40, gender: "female" },
{   name: "John",   age: 19, gender: "male" },
{   name: "Toni",   age: 50, gender: "trans" },
{   name: "Gene",   age: 19, gender: "trans" },
{   name: "Freddy", age: 80, gender: "male" }

];

Я знаю, что этот метод правильный

var reduceGenderSum = people.reduce(function(obj, person){
if(!obj[person.gender]){
    obj[person.gender] = 1;
} else {
    obj[person.gender] += 1;
}
return obj;
}, {})

Но я не слишком уверен в этом, используя цикл, но кто-нибудь может проверить меня.

function genderSumFn(){
var count = 0;
var count2 = 0;
var count3 = 0;
for(var i = 0; i < people.length; i ++){
    if(people[i].gender === 'male'){
        count ++;
    } else if(people[i].gender === 'female'){
        count2 ++
    } else {
        count3 ++
    }
}
return { male: count, female: count2, trans: count3 };
}

Я получаю тот же результат. Я просто хотел убедиться, что я делаю это правильно, используя цикл for.

Теги:
for-loop

1 ответ

0

Fo почти такой же подход для цикла for как и при обратном вызове reduce, вы также можете использовать объект.

function getGenderCount(people) {
    var count = {},
        i;

    for (i = 0; i < people.length; i++) {
        count[people[i].gender] = count[people[i].gender] || 0;
        count[people[i].gender]++;
    }
    return count;
}

var people = [{ name: "Jesse", age: 32, gender: "male" }, { name: "Tommi", age: 40, gender: "female" }, { name: "John", age: 19, gender: "male" }, { name: "Toni", age: 50, gender: "trans" }, { name: "Gene", age: 19, gender: "trans" }, { name: "Freddy", age: 80, gender: "male" }];

console.log(getGenderCount(people));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню