如何将项目从多个数组添加到另一个数组?

时间:2020-01-15 16:34:29

标签: javascript jquery html vue.js

我使用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;
        }

我知道我需要以某种方式再次循环内部,以获取内部数组中的项目。有帮助吗?

2 个答案:

答案 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);