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

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.