javascript

Filter array based on given key in JavaScript

const users = [
    {
        id: 1,
        name: "Raj",
        age: 28,
        city: "Bangalore",
        state: "Karnataka",
        country: "India",
        email: "raj@gmail.com",
        mobile: "8888888888",
        skills: ["React", "NodeJS", "MongoDB"],
        experience: 5,
        salary: 850000,
        isActive: true
    },
    {
        id: 2,
        name: "Amit",
        age: 30,
        city: "Delhi",
        state: "Delhi",
        country: "India",
        email: "amit@gmail.com",
        mobile: "77777777777",
        skills: ["Java", "Spring Boot", "MySQL"],
        experience: 7,
        salary: 1200000,
        isActive: true
    },
    {
        id: 3,
        name: "John",
        age: 26,
        city: "Bangalore",
        state: "Karnataka",
        country: "India",
        email: "john@gmail.com",
        mobile: "6666666666",
        skills: ["Python", "Django", "PostgreSQL"],
        experience: 4,
        salary: 700000,
        isActive: false
    },
    {
        id: 4,
        name: "Sneha",
        age: 27,
        city: "Mumbai",
        state: "Maharashtra",
        country: "India",
        email: "sneha@gmail.com",
        mobile: "8888888888",
        skills: ["Angular", "TypeScript", "Firebase"],
        experience: 3,
        salary: 650000,
        isActive: true
    },
    {
        id: 5,
        name: "Vikram",
        age: 35,
        city: "Pune",
        state: "Maharashtra",
        country: "India",
        email: "vikram@gmail.com",
        mobile: "8888888888",
        skills: ["AWS", "DevOps", "Docker"],
        experience: 10,
        salary: 1800000,
        isActive: true
    },
    {
        id: 6,
        name: "Priya",
        age: 24,
        city: "Chennai",
        state: "Tamil Nadu",
        country: "India",
        email: "priya@gmail.com",
        mobile: "8888888888",
        skills: ["UI/UX", "Figma", "Photoshop"],
        experience: 2,
        salary: 500000,
        isActive: false
    },
    {
        id: 7,
        name: "Arjun",
        age: 29,
        city: "Hyderabad",
        state: "Telangana",
        country: "India",
        email: "arjun@gmail.com",
        mobile: "7777777777",
        skills: ["PHP", "CodeIgniter", "MySQL"],
        experience: 6,
        salary: 900000,
        isActive: true
    },
    {
        id: 8,
        name: "Neha",
        age: 31,
        city: "Delhi",
        state: "Delhi",
        country: "India",
        email: "neha@gmail.com",
        mobile: "5656666666",
        skills: ["QA", "Selenium", "Cypress"],
        experience: 8,
        salary: 1100000,
        isActive: true
    },
    {
        id: 9,
        name: "Karan",
        age: 33,
        city: "Bangalore",
        state: "Karnataka",
        country: "India",
        email: "karan@gmail.com",
        mobile: "9999999999",
        skills: ["AI", "Machine Learning", "Python"],
        experience: 9,
        salary: 2000000,
        isActive: true
    },
    {
        id: 10,
        name: "Meera",
        age: 25,
        city: "Kolkata",
        state: "West Bengal",
        country: "India",
        email: "meera@gmail.com",
        mobile: "7877777777",
        skills: ["React Native", "Flutter", "Firebase"],
        experience: 3,
        salary: 750000,
        isActive: false
    }
];

function filterData(field){
    let data = users.reduce((temp, eachRow) => {

        if (!temp[eachRow[field]]) {
            temp[eachRow[field]] = [];
        }

        temp[eachRow[field]].push(eachRow);

        return temp;

    }, {});

    return data;
}

console.log(filterData("city"));