gpt4 book ai didi

javascript根据条件从嵌套的对象数组返回属性值

转载 作者:行者123 更新时间:2023-11-29 16:37:07 25 4
gpt4 key购买 nike

我有一个对象数组,其中每个对象都可以有一个对象数组。

var mylist = [
{
"email" : null,
"school" : "schoolA",
"courses": [
{
"name" : 'ABC',
"type" : "chemistry"
},
{
"name" : 'XYZ',
"type": "math"
}
]
},
{
"email" : null,
"school": "schoolB"
}
];

如果类(class)类型之一是化学,我想返回类(class)名称。类(class)类型是唯一的,即使它们是重复的,我们也返回第一个。

var result = mylist.some(function (el) {
el.courses && el.courses.some(function(u) {
if (u.type === 'chemistry') {
return u.name;
};
})
});

console.log('outcome:', result);

我的代码在这个阶段不工作。

最佳答案

some 回调应该返回一个 truthy 或 falsy 值,它告诉 some 是否继续(true = 停止),并且 some 返回一个 bool 值,而不是回调返回值。

在这种情况下,可能最简单的方法就是直接分配给result:

var result;
mylist.some(function(el) {
return (el.courses || []).some(function(course) {
if (course.type === "chemistry") {
result = course.name;
return true;
}
return false;
});
});

实例:

var mylist = [
{
"email" : null,
"school" : "schoolA",
"courses": [
{
"name" : 'ABC',
"type" : "chemistry"
},
{
"name" : 'XYZ',
"type": "math"
}
]
},
{
"email" : null,
"school": "schoolB"
}
];

var result;
mylist.some(function(el) {
return (el.courses || []).some(function(course) {
if (course.type === "chemistry") {
result = course.name;
return true;
}
return false;
});
});
console.log(result);


我坚持使用 ES5 语法,因为您在问题中没有使用任何 ES2015+,但在 ES2015+ 中,最简单的可能是使用嵌套的 for-of 循环:

let result;
outer: for (const el of mylist) {
for (const course of el.courses || []) {
if (course.type === "chemistry") {
result = course.name;
break outer;
}
}
}

实例:

const mylist = [
{
"email" : null,
"school" : "schoolA",
"courses": [
{
"name" : 'ABC',
"type" : "chemistry"
},
{
"name" : 'XYZ',
"type": "math"
}
]
},
{
"email" : null,
"school": "schoolB"
}
];

let result;
outer: for (const el of mylist) {
for (const course of el.courses || []) {
if (course.type === "chemistry") {
result = course.name;
break outer;
}
}
}
console.log(result);

关于javascript根据条件从嵌套的对象数组返回属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com