Reputation: 669
I want to get key and value from json array with dynamic keys. Meaning, I don't know in advance what will be the keys.
This is an example to the json the function gets:
arr = [
{key1: 'val1'},
{key2: 'val2'},
{key3: 'val3'}
];
It seems simple to me but I am unable to get the key and value for each item.
This is what I tried (based on this pipe):
for (let key of arr) {
console.log ('key: ' + key + ', value: ' + arr[key]);
}
But what I get in the log is the following:
key:[object Object], value: undefined
My expected behavior is to get the following:
key:key1, value:val1
What am I doing wrong? How can I get the keys and values?
Upvotes: 8
Views: 71501
Reputation: 1043
json = {payload.InsuredMobileNumber.type: "string"
payload.accidentTime.type: "string"
payload.causeOfLoss.type: "string"
payload.claimRegistrationDate.type: "string"
payload.emailAddress.type: "string"}
var keyData = Object.keys(json);
var valueData = Object.values(json)
console.log("keyData = ", keyData)
console.log("valueData = ", valueData)
Upvotes: 0
Reputation: 1
You can try these
object = [
{
"id": 1,
"test": "test1",
"name": ["abc", "pqr"]
},
{
"id": 2,
"test": "test2",
"name": ["abc2", "pqr2"]
},
{
"id": 3,
"test": "test3",
"name": ["abc3", "pqr3"]
},
{
"id": 4,
"test": "test4",
"name": ["abc4", "pqr4"]
}]
and your js or typescript code be like:-
YourMethod() {
for (let item of this.object) {
for (let i in item) {
if (typeof (item[i]) === 'object') {
item[i].forEach((e: any) => {
console.log("runseprate", e)
})
}
}
}}
Upvotes: 0
Reputation: 17
yourObject.forEach(function(value, index){
// do your job
console.log(value, index);
});
Upvotes: 0
Reputation: 1183
If you are more concerned to specify object like
var temp={'name':Dinesh,'age':18}
You may use following syntax.
console.log(Object.keys(temp)[0],Object.values(temp)[0]):
Specially zero index because object's both method keys and values return an array
Upvotes: 5
Reputation: 8312
In your example, you have an array of objects and each of these object has exactly one property.
for (let obj of arr) {
console.log("object:", obj);
for (let key in obj) {
console.log(" key:", key, "value:", obj[key]);
}
}
The following code from your posting
for (let key in arr) {
console.log ('key: ' + key + ', value: ' + arr[key]);
}
... would work on a data structure like this:
let arr = {
key1: 'val1',
key2: 'val2',
key3: 'val3'
};
Upvotes: 20
Reputation: 222582
You need another for loop to access key and value,
for (let key of this.arr) {
for(var i in key){
console.log('key: ' + i + ', value: ' + key[i]);
}
}
Check the console
Upvotes: 3