1

I have the following javascript array:

var groupedDataSet1 = [{year: "0-1k", value1: Math.floor(Math.random()), value2: Math.floor(Math.random()), value3: Math.floor(Math.random())},
            {year: "1-2k", value1: Math.floor(Math.random()), value2: Math.floor(Math.random()), value3: Math.floor(Math.random())},
            {year: "2-3k", value1: Math.floor(Math.random()), value2: Math.floor(Math.random()), value3: Math.floor(Math.random())},
            {year: "3-4k", value1: Math.floor(Math.random()), value2: Math.floor(Math.random()), value3: Math.floor(Math.random())},
            {year: "4-5k", value1: Math.floor(Math.random()), value2: Math.floor(Math.random()), value3: Math.floor(Math.random())}];

I'd like to programatically know how many key/value pairs I have in each entry.

Is there a way to know that groupedDataSet contains the keys year, value1, value2, and value3 while another javascript array might only contain year, value1 and value2?

Doing groupedDataSet[0].length doesn't work.

Thanks.

3
  • 1
    See here: stackoverflow.com/questions/18912/how-to-find-keys-of-a-hash Commented Sep 3, 2013 at 17:08
  • A object hash does not have the length property.. you will have to explicitly iterate over the keys to get the length Commented Sep 3, 2013 at 17:09
  • 1
    Object.keys(groupedDataSet1[i]).length should do the trick. Commented Sep 3, 2013 at 17:09

2 Answers 2

3
Object.keys(groupedDataSet[0]).length

should get you what you're looking for. It returns an array containing the instance keys in the object.

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

2 Comments

Once I have the key saved in a variable, how do I access the value? For example key = Object.keys(groupedDataSet[0]). How do I use key to get the actual value stored in groupedDataSet[0].<whatever key is> ?
Figured it out. Object.keys(groupedDataSet[0])[key] will return me the value. Thanks!
1

If the objects in the list may have different key set, then you have to check each object to collect all keys. You can do

var keys_memo = {};
groupedDataSet1.forEach(function (item) {
    for (var i in item) {
        keys_memo[i] = 1;
    }
});
var keys = Object.keys(keys_memo);

console.log(keys)
>>>["year", "value1", "value2", "value3"] 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.