Home > Enterprise >  Iterate over object with some keys and array of objects inside
Iterate over object with some keys and array of objects inside

Time:11-29

Assuming I have this data format:

const matchedProperty = "property1"

const jsonObject = {
    "property1": {
        param1: '',
        param2: '',
        param3: '',
        data: [
            {key: value},
            {key: value},
            {key: value},
            {key: value}
        ],
        param4: ''
    },
    "propery2": {
        param1: '',
        param2: '',
        param3: '',
        data: [
            {key: value},
            {key: value},
            {key: value},
            {key: value}
        ],
        param4: ''
    }

}

How can I check if the property exists inside this json and after that how can I extract only data[{}] and param1 for example?

Can't think of something that would be helpful and working

CodePudding user response:

something like this?

const matchedProperty = "property1"

const jsonObject = {
    "property1": {
        param1: '',
        param2: '',
        param3: '',
        data: [
            {key: 'value'},
            {key: 'value'},
            {key: 'value'},
            {key: 'value'}
        ],
        param4: ''
    },
    "propery2": {
        param1: '',
        param2: '',
        param3: '',
        data: [
            {key: 'value'},
            {key: 'value'},
            {key: 'value'},
            {key: 'value'}
        ],
        param4: ''
    }

}

const result = jsonObject.hasOwnProperty(matchedProperty)?{param1: jsonObject[matchedProperty].param1, data: jsonObject[matchedProperty].data}:{}
console.log(result)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>

CodePudding user response:

Title doesn't match with body, so here's iteration and direct access:

Iterating over Objects: for..in

let object = { a: 1, b: 2, c: 3 }

for (let key in object) {
  console.log(key   ' = '   object[key])
}

// a = 1
// b = 2
// c = 3

Iterating over Arrays: for..of

let vector = ['a', 'b', 'c']

for (let element of vector) {
  console.log(element)
}

// a
// b
// c

Accessing Array Values At Position

let vector = ['a', 'b', 'c']
console.log(vector[0]) // a
console.log(vector[1]) // b
console.log(vector[2]) // c
console.log(vector[3]) // undefined

Accessing Object Values By Key

let object = { a: 1, b: 2, c: 3 }
console.log(object["a"]) // 1
console.log(object.a)    // 1
console.log(object["b"]) // 2
console.log(object.b)    // 2
console.log(object["c"]) // 3
console.log(object.c)    // 3
console.log(object["d"]) // undefined
console.log(object.d)    // undefined

Check if Exists

Since undefined won't trigger on an if-condition but values will, just write if object["key"]; it will execute the next code block if the key exists, otherwise it won't. (Not suggested practice.)

  • Related