francesca
francesca

Reputation: 597

Javascript: pick only certain properties in Object

I have configuration object for my features:

const features = {
    "feature1": {
        "value": 1,
        "description": ""
    },
    "feature2": {
        "value": 2,
        "description": ""
    }
}

How to transform it to feature/value format like

{"feature1": 1, "feature2": 2}

My variant is below, but I feel it's not elegant

let config = {};

config = Object.keys(features).map(
    k  => config[k] = flags[k]["value"]
);

Upvotes: 1

Views: 1179

Answers (1)

Nenad Vracar
Nenad Vracar

Reputation: 122087

You can use ES6 spread syntax with Object.assign() and map().

const features = {"feature1":{"value":1,"description":""},"feature2":{"value":2,"description":""}}

var result = Object.assign({}, ...Object.keys(features).map(k => ({[k]: features[k].value})))
console.log(result)

Or you can use Object.keys() and reduce()

const features = {"feature1":{"value":1,"description":""},"feature2":{"value":2,"description":""}}

var result = Object.keys(features).reduce((r, e) => (r[e] = features[e].value, r), {})
console.log(result)

Upvotes: 1

Related Questions