简体   繁体   中英

How to get the object key it has the value

I have a filter component which user can choose any data to filter so I store this data in state.when I want to create a params for query some of the field not choosen by user I only wanna get the one which has value here is the code;

function createParams(params = {}) {
    let result = "?";
    for (let key in params) {
        result += `${key}=${params[key]}&`;
    }
    return result;
}

export async function callApi(params) {
    const parameters = createParams(params);
    try {
        const response = await fetch(URL+ parameters);
        const res = await response.json();
        return res;
    } catch (error) {
        console.error(error)
        throw error;
    }
}

export const requestProperties = (params) => callApi(params);

const requestedParams = {type:"Fiat", model:"500", color:""};

I only want to get the type and model because it has been choosen by user to filter. I dont wanna include the colour

Thank you..:)

You can destructure the object if you only want to exclude one key-value pair

 const requestedParams = {type:"Fiat", model:"500", color:""}; const exclude = 'color'; const {[exclude]: remove, ...rest} = requestedParams; console.log(rest);

If you have multiple key-value pairs that you want to exclude, you can use reduce function

 const requestedParams = { type: "Fiat", model: "500", color: "" }; const res = Object.entries(requestedParams).reduce((acc, curr) => { return curr[1]? (acc[curr[0]] = curr[1], acc): acc; }, {}); console.log(res);

You can take entries and then filter out the records.

 var requestedParams = {type:"Fiat", model:"500", color:""}; var result = Object.fromEntries(Object.entries(requestedParams).filter(([k,v])=>v)); console.log(result);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM