0

I am having troubles getting key values in a block of code similar to the following:

var someArray = [];
someArray.push(objX, objY, objZ); //each of these objects pushed in have 1 key/value pair

for (var i = 0; i < someArray.length; i++) {
    switch (Object.keys(someArray[i][0])) { //Not sure that "[i][0]" is valid?
        //now set tags using Jquery
    }
}

So in the above code example I am passing in an array of objects (each object is a single key/value pair). And want to get the key of each of these so I can set the HTML tag that corresponds to each using Jquery.

Thought: just the [i] will be sufficient since the array of each object's keys will only every be 1?

Any help is appreciated!!

0

2 Answers 2

3

If each object will definitely have only one enumerable property, then you can use Object.keys(someArray[i])[0] to get that property's name in your loop. Object.keys returns an array of the object's own, enumerable property names, and [0] gets the first entry from it. (And of course, someArray[i][theName] will give you the value of that property.)

Example:

var objX = {
  x: "ecks"
};
var objY = {
  y: "why"
};
var objZ = {
  z: "zee"
};
var someArray = [];
someArray.push(objX, objY, objZ);

for (var i = 0; i < someArray.length; i++) {
  var arrayEntry = someArray[i];
  var name = Object.keys(arrayEntry)[0];
  console.log(name + " is " + arrayEntry[name]);
}

Sign up to request clarification or add additional context in comments.

2 Comments

I was definitely overthinking this problem... This works, thank you very much!!
@codeglove26: Object.keys(someArray[i][0]) was so close. :-)
1

Use the objects in the array as real objects.

var objX = {key: 'one', value: 'oneValue'};
var objY = {key: 'two', value: 'twoValue'};
var objZ = {key: 'three', value: 'threeValue'};

var someArray = [];
someArray.push(objX, objY, objZ); //each of these objects pushed in have 1 key/value pair

for (var i = 0; i < someArray.length; i++) {
    var obj = someArray[i];
    var key = obj.key;
    var value = obj.value;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.