我有以下javascript数组:
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())}];
我想以编程方式知道每个条目中有多少个键/值对。
有没有办法知道groupsDataSet包含键year,value1,value2和value3,而另一个javascript数组可能只包含year,value1和value2?
执行groupedDataSet [0] .length不起作用。
感谢。
答案 0 :(得分:3)
Object.keys(groupedDataSet[0]).length
应该能找到你想要的东西。它返回一个包含对象中实例键的数组。
答案 1 :(得分:1)
如果列表中的对象可能具有不同的键集,则必须检查每个对象以收集所有键。你可以做到
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"]