Javascript 为什么这个getter返回未定义?
下面是一个getter示例,它在数组上迭代,并返回一个Javascript 为什么这个getter返回未定义?,javascript,getter,Javascript,Getter,下面是一个getter示例,它在数组上迭代,并返回一个a为true的元素。但是test.active返回undefined var test = { arr: [ {id: 1, a: false}, {id: 2, a: false}, {id: 3, a: true}, {id: 4, a: false}, {id: 5, a: false}, ], get active() { this.arr.forEach(item =>
a
为true
的元素。但是test.active
返回undefined
var test = {
arr: [
{id: 1, a: false},
{id: 2, a: false},
{id: 3, a: true},
{id: 4, a: false},
{id: 5, a: false},
],
get active() {
this.arr.forEach(item => {
if(item.a) return item
})
}
}
为什么?您的
return
语句位于内部函数中,导致该函数返回。您的外部函数实际上不返回任何内容
如果希望外部函数返回,请改用正常的for
循环
var测试={
arr:[
{id:1,a:false},
{id:2,a:false},
{id:3,a:true},
{id:4,a:false},
{id:5,a:false},
],
活跃起来{
for(var i=0,e=this.arr.length;i console.log(test.active)
您的return
语句位于内部函数中,导致该函数返回。您的外部函数实际上不返回任何内容
如果希望外部函数返回,请改用正常的for
循环
var测试={
arr:[
{id:1,a:false},
{id:2,a:false},
{id:3,a:true},
{id:4,a:false},
{id:5,a:false},
],
活跃起来{
for(var i=0,e=this.arr.length;i console.log(test.active)代码>或者,您可以使用函数测试给定条件并返回找到的元素
var test = {
arr: [
{id: 1, a: false},
{id: 2, a: false},
{id: 3, a: true},
{id: 4, a: false},
{id: 5, a: false},
],
get active() {
return this.arr.find(item => {
return (item.a === true);
});
}
}
alert(test.active.id)
或者,您可以使用函数测试给定条件并返回找到的元素
var test = {
arr: [
{id: 1, a: false},
{id: 2, a: false},
{id: 3, a: true},
{id: 4, a: false},
{id: 5, a: false},
],
get active() {
return this.arr.find(item => {
return (item.a === true);
});
}
}
alert(test.active.id)
是此处使用的正确方法<代码>返回this.arr.find(item=>item.a)代码>如果有多个元素具有a===true
,该怎么办?是此处使用的正确方法<代码>返回this.arr.find(item=>item.a)代码>如果有多个元素具有a===true
,该怎么办?