如何获取javascript中对象数组中的对象数组的长度?

如何获取javascript中对象数组中的对象数组的长度?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我曾尝试在谷歌上搜索这个问题,并在stackoverflow中搜索,但没有成功,所以作为最后的手段,我在问这个问题,以防有人能给我指出正确的方向 我在下面给出了一个代码的示例 var objectInfo = [ { name:"object1", materials: [{ name: "wood", quantity:10 }, { name: "stone", quantity:16 }], }

我曾尝试在谷歌上搜索这个问题,并在stackoverflow中搜索,但没有成功,所以作为最后的手段,我在问这个问题,以防有人能给我指出正确的方向

我在下面给出了一个代码的示例

var objectInfo = [
{
    name:"object1",
    materials: [{
        name: "wood",
        quantity:10
    }, {
        name: "stone",
        quantity:16
    }],
}, {
    name:"object2",
    materials: [{
        name: "wood",
        quantity:10
    }, {
        name: "stone",
        quantity:16
    }, {
        name: "bricks",
        quantity:100
    }],
}]
我的问题是,如何获得材质对象数组的长度

我的努力如下:

function getMaterialsArrayLength(objName) {
    for (i = 0; i < objectInfo.length; i++) {
        if (objectInfo[i].name == objName) {
            return objectInfo[i].materials.length
        }
    }    
};
函数GetMaterialArrayLength(objName){ 对于(i=0;i 但是,返回的错误是“无法读取未定义的属性材料”。是否有人有任何潜在的解决方案来查找数组长度


如果以前发布过此消息,我深表歉意。

您无法获取不存在的数组的长度;更准确地说,您查看的数组的元素是未定义的,因此无法找到长度:

var objectInfo=[{
名称:“object1”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}],
}, {
名称:“object2”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}, {
名称:“砖块”,
数量:100
}],
}]
函数getMaterialsLength(objName){
返回objectInfo.find(o=>o.name==objName).materials.length;
}

log(getMaterialsLength('object2')只需通过其索引访问对象:

var objectInfo=[
{
名称:“object1”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}],
}, {
名称:“object2”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}, {
名称:“砖块”,
数量:100
}],
}];
console.log(“objectInfo[0].materials.length:+objectInfo[0].materials.length”);
console.log(“objectInfo[1].materials.length:+objectInfo[1].materials.length”)使用lodash.js

var objectInfo=[
{
名称:“object1”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}],
}, {
名称:“object2”,
材料:[{
名称:“木头”,
数量:10
}, {
名称:“石头”,
数量:16
}, {
名称:“砖块”,
数量:100
}],
}];
函数getMaterialsLength(objName){
_.每个(对象信息、功能(obj){
如果(obj.name==objName){
控制台日志(尺寸(对象材料));
}
});
}
getMaterialsLength('object2')

此处缺少括号:
for(i=0;i
@wostex修复了这一问题,但不幸的是它没有帮助。为什么?您的代码现在可以工作了: