我试图做做一个简单的应用程序,它显示并保存您的收藏夹(让我们很容易地称他们为“对象”)。我想做到这一点,如:从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
我想刚刚访问该对象,这样我可以操纵它,但我不能,因为它是不确定的。
(希望有正确遵循这些指导原则,并希望我的英语不够好,使之可以理解的,谢谢)。
我建议你,而不是使用find
forEach
的为您的使用情况下,如果可用。
const name = this.$store.state.favTime.id;
const favourite = Elenco.find(element => element.name === name)
console.log(favourite)
如果您需要在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);
查找()方法满足提供的测试功能的阵列中返回第一个元素的值。否则,则返回undefined。
如果你想找到的最后一个元素,可以reverse数组:
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);