我使用Vue遍历了一系列对象。每个对象都有一个键值对,该值是另一个数组。如何遍历每个对象,然后遍历该对象中的每个数组,以将所有唯一项添加到一个数组中?
const objects: [
{
hungry: true,
name: "pete",
fruits: ["banana", "orange"]
},
{
hungry: false,
name: "sam",
fruits: ["grapes", "kiwi"]
},
{
hungry: true,
name: "george",
fruits: ["pear", "mango"]
}
]
这使我接近,但只是将每个内部数组添加到外部数组,而不是该数组中的唯一项...
uniqueFruits: function() {
const fruitList = [];
this.objects.forEach((object)=>{
if (!fruitList.includes(object.fruits)) {
fruitList.push(objects.fruits);
}
});
return fruitList;
}
我知道我需要以某种方式再次循环内部,以获取内部数组中的项目。有帮助吗?
答案 0 :(得分:2)
我认为您正在寻找这样的东西:
const objects = [
{
hungry: true,
name: "pete",
fruits: ["banana", "orange"]
},
{
hungry: false,
name: "sam",
fruits: ["grapes", "kiwi"]
},
{
hungry: true,
name: "george",
fruits: ["pear", "mango"]
}
];
const fruitList = [];
objects.forEach(item => item.fruits.forEach(fruit => fruitList.push(fruit)));
console.log(fruitList);
更新:
如果要在推送之前检查重复的水果名称,可以将代码编辑为:
const objects = [
{
hungry: true,
name: "pete",
fruits: ["banana", "orange"]
},
{
hungry: false,
name: "sam",
fruits: ["grapes", "banana"]
},
{
hungry: true,
name: "george",
fruits: ["orange", "mango"]
}
];
const fruitList = [];
objects.forEach(item => item.fruits.forEach(fruit => {
if (fruitList.indexOf(fruit) < 0) {
fruitList.push(fruit);
}
}));
console.log(fruitList);
答案 1 :(得分:1)
使用嵌套循环是一种方法,使用es6,您可以代替执行 "react": "16.9.0",
"react-native": "0.61.5",
,而执行以下操作:
fruitList.push(objects.fruits);
删除重复项的一种方法是在拥有整个fruitList = [...fruitList, ...objects.fruits];
之后,将其转换为fruitList
的集合。这只会给您留下唯一的水果名称。如果需要数组类型,只需const fruitSet = new Set(fruitList);
。