Javascript 如何显示对象数组中每个元素的长度?

Javascript 如何显示对象数组中每个元素的长度?,javascript,Javascript,下面的日志数组包含9个对象。每个对象都包含一个数组。例如,第一个对象包含一个包含3个元素的数组,即“carrot”、“exercise”、“weekend”。我的目标是编写一个代码来显示每个对象中包含的每个数组的长度。 谢谢你的意见 var日志=[ {“events1”:[“胡萝卜”、“锻炼”、“周末”],“松鼠”:false}, {“事件2”:[“面包”、“布丁”、“刷牙”、“周末”、“触摸树”]、“松鼠”:假], {“事件3”:[“胡萝卜”、“玉米片”、“刷牙”、“骑自行车”、“周末”]、

下面的日志数组包含9个对象。每个对象都包含一个数组。例如,第一个对象包含一个包含3个元素的数组,即“carrot”、“exercise”、“weekend”。我的目标是编写一个代码来显示每个对象中包含的每个数组的长度。 谢谢你的意见

var日志=[
{“events1”:[“胡萝卜”、“锻炼”、“周末”],“松鼠”:false},
{“事件2”:[“面包”、“布丁”、“刷牙”、“周末”、“触摸树”]、“松鼠”:假],
{“事件3”:[“胡萝卜”、“玉米片”、“刷牙”、“骑自行车”、“周末”]、“松鼠”:假],
{“事件4”:[“布鲁塞尔芽”、“冰淇淋”、“刷牙”、“电脑”、“周末”]、“松鼠”:假],
{“事件5”:[“土豆”、“糖果”、“刷牙”、“锻炼”、“周末”、“牙医”]、“松鼠”:假],
{“events6”:[“布鲁塞尔芽”、“布丁”、“刷牙”、“跑步”、“周末”]、“松鼠”:假],
{“events7”:[“披萨”、“刷牙”、“电脑”、“工作”、“触摸树”]、“松鼠”:假],
{“事件8”:[“面包”、“啤酒”、“刷牙”、“骑自行车”、“工作”]、“松鼠”:假],
{“事件9”:[“菜花”、“刷牙”、“工作”]、“松鼠”:假]
];
for(设i=0;i
这就是你需要的吗?
var日志=[
{“events1”:[“胡萝卜”、“锻炼”、“周末”],“松鼠”:false},
{“事件2”:[“面包”、“布丁”、“刷牙”、“周末”、“触摸树”]、“松鼠”:假],
{“事件3”:[“胡萝卜”、“玉米片”、“刷牙”、“骑自行车”、“周末”]、“松鼠”:假],
{“事件4”:[“布鲁塞尔芽”、“冰淇淋”、“刷牙”、“电脑”、“周末”]、“松鼠”:假],
{“事件5”:[“土豆”、“糖果”、“刷牙”、“锻炼”、“周末”、“牙医”]、“松鼠”:假],
{“events6”:[“布鲁塞尔芽”、“布丁”、“刷牙”、“跑步”、“周末”]、“松鼠”:假],
{“events7”:[“披萨”、“刷牙”、“电脑”、“工作”、“触摸树”]、“松鼠”:假],
{“事件8”:[“面包”、“啤酒”、“刷牙”、“骑自行车”、“工作”]、“松鼠”:假],
{“事件9”:[“菜花”、“刷牙”、“工作”]、“松鼠”:假]
];
for(设i=0;i}
我不确定这是否是您想要实现的,但是如果您使用
for
-循环在数组(
日志
)中循环,您可以使用
日志[I]
访问对象。然后,您将得到如下对象:

{
  "events1": [
    "carrot",
    "exercise",
    "weekend"
  ],
  "squirrel":false
}
JOURNAL[i]['events' + (i + 1)].length
然后,要在
events1
中访问数组的长度,只需使用
JOURNAL[i].events1.length
。如果单词
events
后面的数字总是增加1,并且从
1
开始,则可以这样做:

{
  "events1": [
    "carrot",
    "exercise",
    "weekend"
  ],
  "squirrel":false
}
JOURNAL[i]['events' + (i + 1)].length
var日志=[
{“events1”:[“胡萝卜”、“锻炼”、“周末”],“松鼠”:false},
{“事件2”:[“面包”、“布丁”、“刷牙”、“周末”、“触摸树”]、“松鼠”:假],
{“事件3”:[“胡萝卜”、“玉米片”、“刷牙”、“骑自行车”、“周末”]、“松鼠”:假],
{“事件4”:[“布鲁塞尔芽”、“冰淇淋”、“刷牙”、“电脑”、“周末”]、“松鼠”:假],
{“事件5”:[“土豆”、“糖果”、“刷牙”、“锻炼”、“周末”、“牙医”]、“松鼠”:假],
{“events6”:[“布鲁塞尔芽”、“布丁”、“刷牙”、“跑步”、“周末”]、“松鼠”:假],
{“events7”:[“披萨”、“刷牙”、“电脑”、“工作”、“触摸树”]、“松鼠”:假],
{“事件8”:[“面包”、“啤酒”、“刷牙”、“骑自行车”、“工作”]、“松鼠”:假],
{“事件9”:[“菜花”、“刷牙”、“工作”]、“松鼠”:假]
];
for(设i=0;i}
尝试使用
Object.entries()
函数

var JOURNAL = [
  {"events1":["carrot","exercise","weekend"],"squirrel":false},
  {"events2":["bread","pudding","brushed teeth","weekend","touched tree"],"squirrel":false},
  {"events3":["carrot","nachos","brushed teeth","cycling","weekend"],"squirrel":false},
  {"events4":["brussel sprouts","ice cream","brushed teeth","computer","weekend"],"squirrel":false},
  {"events5":["potatoes","candy","brushed teeth","exercise","weekend","dentist"],"squirrel":false},
  {"events6":["brussel sprouts","pudding","brushed teeth","running","weekend"],"squirrel":false},
  {"events7":["pizza","brushed teeth","computer","work","touched tree"],"squirrel":false},
  {"events8":["bread","beer","brushed teeth","cycling","work"],"squirrel":false},
  {"events9":["cauliflower","brushed teeth","work"],"squirrel":false}
];
JOURNAL.map(item => {
    for (let [key, value] of Object.entries(item)) {
        if (Array.isArray(value)) {
            console.log(`{$key} length is ${value.length}.`);
        } 
    }
}

官方指南:

根据您的陈述,如果财产名称一致,您就不会有问题,您可以按照前两个答案建议执行:

console.log(JOURNAL[i]["events" + (i + 1)].length);
问题是,这很微妙。一旦属性的名称与它在数组中的位置不一致,它就会失败

更可靠的解决方案是找到与
eventsN
匹配的属性,其中
N
是任何一系列数字:

const prop = Object.keys(entry).find(key => /^events\d+$/.test(key));
console.log(prop ? entry[prop].length : -1); // Where -1 is "didn't find it"
实例:

var日志=[
{“events1”:[“胡萝卜”、“锻炼”、“周末”],“松鼠”:false},
{“事件2”:[“面包”、“布丁”、“刷牙”、“周末”、“触摸树”]、“松鼠”:假],
{“事件3”:[“胡萝卜”、“玉米片”、“刷牙”、“骑自行车”、“周末”]、“松鼠”:假],
{“事件4”:[“布鲁塞尔芽”、“冰淇淋”、“刷牙”、“电脑”、“周末”]、“松鼠”:假],
{“事件5”:[“土豆”、“糖果”、“刷牙”、“锻炼”、“周末”、“牙医”]、“松鼠”:假],
{“events6”:[“布鲁塞尔芽”、“布丁”、“刷牙”、“跑步”、“周末”]、“松鼠”:假],
{“events7”:[“披萨”、“刷牙”、“电脑”、“工作”、“触摸树”]、“松鼠”:假],
{“事件8”:[“面包”、“啤酒”、“刷牙”、“骑自行车”、“工作”]、“松鼠”:假],
{“事件9”:[“菜花”、“刷牙”、“工作”]、“松鼠”:假]
];
for(设i=0;i/^events\d+$/.test(key));
console.log(prop?entry[prop].length:-1);//其中-1为“未找到”

}
您只需遍历数组并获取值,如果它是数组,请检查其长度

for(const elem of JOURNAL) {
 for(const val of Object.values(elem)){
    if(Array.isArray(val)){
        console.log('size - ', val.length);
    }
 }

}

对象没有“长度”您是指对象的“长度”吗?(正如pointy所说,他们没有这个功能,尽管你可以根据你想如何定义“长度”来计算出来。)或者
events1
events2
,等等上的数组长度。但是如果你使用console.log(JOURNAL[0].events1.length),第一个元素会得到3。只需FWIW,在每个对象中更改属性名称通常是不好的做法