为什么不是的forEach功能让我返回一个对象,甚至只是路过它从功能?

问题描述 投票:1回答:4

我试图做做一个简单的应用程序,它显示并保存您的收藏夹(让我们很容易地称他们为“对象”)。我想做到这一点,如:从vuex获得的喜爱,找到可能的最爱阵列中的最爱,管理我最喜欢的,因为我想要的。

名称值是正确的,我已经知道vuex状态。 Elenco是由JSON有一个阵列,它的作品,因为我在一个V型的和其他两个功能(没有使用的forEach功能)使用它。 if语句做工不错,否则它不会显示第一个“我”。

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

我想刚刚访问该对象,这样我可以操纵它,但我不能,因为它是不确定的。

(希望有正确遵循这些指导原则,并希望我的英语不够好,使之可以理解的,谢谢)。

javascript arrays object vue.js foreach
4个回答
0
投票

我建议你,而不是使用find forEach的为您的使用情况下,如果可用。

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

1
投票

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

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

1
投票

你可能想使用.find()

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

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

console.log(element);

查找()方法满足提供的测试功能的阵列中返回第一个元素的值。否则,则返回undefined。

如果你想找到的最后一个元素,可以reverse数组:

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

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

console.log(element);

1
投票

这是变量的本地和全球范围内的问题。里面的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);


Screenshot of the console

© www.soinside.com 2019 - 2024. All rights reserved.