繁体   English   中英

为什么不是forEach函数让我返回一个对象,甚至只是从函数中传递出来?

[英]Why isn't forEach function letting me returning an object or even just passing it out from the function?

我正在尝试制作一个简单的应用程序,显示并保存您的收藏夹(让我们称之为“对象”)。 我想这样做:从vuex获得最爱,在可能的收藏夹中找到最喜欢的,按照我的意愿管理我最喜欢的。

名称值是正确的,我已经知道vuex状态。 Elenco是一个由JSON获取的数组,它的工作原理是因为我在v-for和其他两个函数中使用它(没有使用forEach函数)。 if语句运行良好,否则它不会显示第一个“i”。

let name = this.$store.state.favTime.id;
console.log(name);
Elenco.forEach(element => {
    if(element.name === name){
        var i = element;
        console.log(i); //element
    }
});
console.log(i); //undefined

我想只是访问该对象,以便我可以操纵它,但我不能,因为它是未定义的。

(希望能够正确地遵循这些指导原则并希望我的英语能够让它变得可以理解,谢谢)。

如果需要在for循环后访问该变量,请在循环之前声明它:

var i;
Elenco.forEach(element => {
    if(element.name === name){
        i = element;
        console.log(i); //element
    }
});
console.log(i);

你可能想用.find()

let name = this.$store.state.favTime.id;

let elem = Elenco.find(element => {
    return element.name === name
});

console.log(element);

find()方法返回数组中第一个满足提供的测试函数的元素的值。 否则返回undefined。

如果要查找最后一个元素,可以反转数组:

let name = this.$store.state.favTime.id;

let elem = [...Elenco].reverse().find(element => {
    return element.name === name
});

console.log(element);

这是本地和全球变量范围的问题。 在for循环内创建的变量具有本地引用,因此全局声明它们。

var name = "Johnny";

var Elenco = [
  {
    name: "Jack Torrance",
    age: 50,
    eyeColor: "blue"
  },
  {
    name: "Toni",
    age: 8,
    eyeColor: "blue"
  },
  {
    name: "Johnny",
    age: 50,
    eyeColor: "blue"
  }
];
var i = new Array();
Elenco.forEach(element => {
    if(element.name === name){
        i.push(element);
        console.log(i); //element
    }
});
console.log(i);


控制台的屏幕截图

我建议您使用find而不是forEach作为您的用例(如果有)。

const name = this.$store.state.favTime.id;
const favourite = Elenco.find(element => element.name === name)
console.log(favourite)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM