Use Object.keys() to get keys array and use forEach() to iterate over them.
var data = {
"VERSION": "2006-10-27.a",
"JOBNAME": "EXEC_",
"JOBHOST": "Test",
"LSFQUEUE": "45",
"LSFLIMIT": "2006-10-27",
"NEWUSER": "3",
"NEWGROUP": "2",
"NEWMODUS": "640"
};
Object.keys(data).forEach(function(key) {
console.log('Key : ' + key + ', Value : ' + data[key])
})
Answer from Pranav C Balan on Stack OverflowUse Object.keys() to get keys array and use forEach() to iterate over them.
var data = {
"VERSION": "2006-10-27.a",
"JOBNAME": "EXEC_",
"JOBHOST": "Test",
"LSFQUEUE": "45",
"LSFLIMIT": "2006-10-27",
"NEWUSER": "3",
"NEWGROUP": "2",
"NEWMODUS": "640"
};
Object.keys(data).forEach(function(key) {
console.log('Key : ' + key + ', Value : ' + data[key])
})
You can use Object.keys for that.
const yourObject = {
"VERSION": "2006-10-27.a",
"JOBNAME": "EXEC_",
"JOBHOST": "Test",
"LSFQUEUE": "45",
"LSFLIMIT": "2006-10-27",
"NEWUSER": "3",
"NEWGROUP": "2",
"NEWMODUS": "640"
}
const keys = Object.keys(yourObject);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
console.log(key, yourObject[key]);
}
Or Object.entries
const yourObject = {
"VERSION": "2006-10-27.a",
"JOBNAME": "EXEC_",
"JOBHOST": "Test",
"LSFQUEUE": "45",
"LSFLIMIT": "2006-10-27",
"NEWUSER": "3",
"NEWGROUP": "2",
"NEWMODUS": "640"
}
const entries = Object.entries(yourObject);
for (let [key,value] of entries) {
console.log(key, value);
}
How do I loop through or enumerate a JavaScript object? - Stack Overflow
[HELP] How to loop through JSON keys?
javascript - iterating through object - Stack Overflow
Can I iterate through the key-value pairs of a JSON object with Serde(/anything-else)?
You can use the for-in loop as shown by others. However, you also have to make sure that the key you get is an actual property of an object, and doesn't come from the prototype.
Here is the snippet:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
For-of with Object.keys() alternative:
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Notice the use of for-of instead of for-in, if not used it will return undefined on named properties, and Object.keys() ensures the use of only the object's own properties without the whole prototype-chain properties
Using the new Object.entries() method:
Note: This method is not supported natively by Internet Explorer. You may consider using a Polyfill for older browsers.
const p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (const [key, value] of Object.entries(p)) {
console.log(`${key}: ${value}`);
}
Under ECMAScript 5, you can combine Object.keys() and Array.prototype.forEach():
var obj = { first: "John", last: "Doe" };
Object.keys(obj).forEach(function(key) {
console.log(key, obj[key]);
});
ECMAScript 6 adds for...of:
for (const key of Object.keys(obj)) {
console.log(key, obj[key]);
}
ECMAScript 8 adds Object.entries() which avoids having to look up each value in the original object:
Object.entries(obj).forEach(
([key, value]) => console.log(key, value)
);
You can combine for...of, destructuring, and Object.entries:
for (const [key, value] of Object.entries(obj)) {
console.log(key, value);
}
Both Object.keys() and Object.entries() iterate properties in the same order as a for...in loop but ignore the prototype chain. Only the object's own enumerable properties are iterated.
I am just starting with JSON. It is a wonderful recent addition to Tasker. I am reading JSON data from a file and want to loop through the keys. Someone please find me a way.
You use a for..in loop for this. Be sure to check if the object owns the properties or all inherited properties are shown as well. An example is like this:
var obj = {a: 1, b: 2};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var val = obj[key];
console.log(val);
}
}
Or if you need recursion to walk through all the properties:
var obj = {a: 1, b: 2, c: {a: 1, b: 2}};
function walk(obj) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var val = obj[key];
console.log(val);
walk(val);
}
}
}
walk(obj);
My problem was actually a problem of bad planning with the JSON object rather than an actual logic issue. What I ended up doing was organize the object as follows, per a suggestion from user2736012.
{
"dialog":
{
"trunks":[
{
"trunk_id" : "1",
"message": "This is just a JSON Test"
},
{
"trunk_id" : "2",
"message": "This is a test of a bit longer text. Hopefully this will at the very least create 3 lines and trigger us to go on to another box. So we can test multi-box functionality, too."
}
]
}
}
At that point, I was able to do a fairly simple for loop based on the total number of objects.
var totalMessages = Object.keys(messages.dialog.trunks).length;
for ( var i = 0; i < totalMessages; i++)
{
console.log("ID: " + messages.dialog.trunks[i].trunk_id + " Message " + messages.dialog.trunks[i].message);
}
My method for getting totalMessages is not supported in all browsers, though. For my project, it actually doesn't matter, but beware of that if you choose to use something similar to this.
I want to iterate through JSON objects, without making their structures.
I didn't really found any similar code in the documentation of Serde. Maybe you can recommend an other library for that.
var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}];
for (var i = 0; i < arr.length; i++){
document.write("<br><br>array index: " + i);
var obj = arr[i];
for (var key in obj){
var value = obj[key];
document.write("<br> - " + key + ": " + value);
}
}
note: the for-in method is cool for simple objects. Not very smart to use with DOM object.
Taken from jQuery docs:
var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };
jQuery.each(arr, function() {
$("#" + this).text("My id is " + this + ".");
return (this != "four"); // will stop running to skip "five"
});
jQuery.each(obj, function(i, val) {
$("#" + i).append(document.createTextNode(" - " + val));
});