Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环对象数组_Javascript - Fatal编程技术网

Javascript 循环对象数组

Javascript 循环对象数组,javascript,Javascript,我必须从这个对象数组中返回Greg和Joe 我正在数组中循环,如果主人是Emily,我想提醒()Greg和Joe,review.name let list=[ { 大师:“狮子座”, 审查:[{ 姓名:'鲍勃', 星星:2 }, { 名字:'珐茵岚', 星星:4 }, ] }, { 大师:“艾米丽”, 审查:[{ 姓名:“格雷格”, 星星:3颗 }, { 名字:'乔', 星星:2 }, ] }, ] for(设i=0;i

我必须从这个对象数组中返回Greg和Joe

我正在数组中循环,如果主人是Emily,我想提醒()Greg和Joe,review.name

let list=[
{
大师:“狮子座”,
审查:[{
姓名:'鲍勃',
星星:2
},
{
名字:'珐茵岚',
星星:4
},
]
},
{
大师:“艾米丽”,
审查:[{
姓名:“格雷格”,
星星:3颗
},
{
名字:'乔',
星星:2
},
]
},
]
for(设i=0;i}
这是因为
review
是一个对象数组&您需要传递索引。在本演示中,传递
0
以获取第一个对象。再次循环
查看
并从每个对象获取名称

let list=[
{
大师:“狮子座”,
审查:[{
姓名:'鲍勃',
星星:2
},
{
名字:'珐茵岚',
星星:4
},
]
},
{
大师:“艾米丽”,
审查:[{
姓名:“格雷格”,
星星:3颗
},
{
名字:'乔',
星星:2
},
]
},
]
for(设i=0;i}
review
是一个对象数组。我们可以这样写一行,但我会解释我们在做什么:

alert(
    list.find(e => e.master === "Emily").review
    .map(e => e.name).join(', ')
)
list
是一个数组,它具有一个
find
。在
find
方法中,我们传递一个返回
true
false
的函数。我们可以决定要找什么。在本例中,我们试图找到
master
属性为“Emily”的条目。找到我们要查找的内容后,我们可以使用
map
循环浏览条目的
review
属性,并返回一个名称数组,最后使用
join
将其粘在一起

另一种方法是使用2个循环:

for (let i = 0; i < list.length; i++) {
    if (list[i].master === 'Emily') {
        let names = [];
        for (let j = 0; j < list[i].review.length; j++) {
            names.push(list[i].review[j].name);
        }
        alert(names.join(', '));
    }
}
for(设i=0;i
请记住,如果找不到
master
属性设置为“Emily”的条目,第一种方法将抛出错误。

您可以执行以下操作:

const list=[{master:'Leo',review:[{name:'Bob',stars:2},{name:'Elly',stars:4},]},{master:'Emily',review:[{name:'Greg',stars:3},{name:'Joe',stars:2}]
list.forEach((o,i)=>{
如果(o.master==='Emily'){
list[i].review.forEach(u=>console.log(u.name));
}

});您的语法不正确。字符串需要用分隔符括起来。您需要两个循环。使用警报肯定不是您真正的目标。解释更高级别的目标是什么。花几分钟时间通读你想要的结果是什么。。?名称数组?