首页 > 解决方案 > 我有两个数组,我试图找到匹配并返回的值。我尝试了几种方法

问题描述

我正在使用两组循环,我试图找到组内的值并将它们与数组进行比较。我创建了一个名为 boolean 的变量来保存布尔值,但我一直在获取不匹配的值,如何在不创建另一个循环的情况下获取不匹配的值?

function sayHello() {

  let array = ["go-fbce", "go-zio", "go-fihjw", "go-abcd"];
  const ids = [
    {
      "id": "z-333",
      "groups": [
        "go-zio",
        "go-fbce"

      ]
    },
    {
      "id": "z-31993",
      "groups": [
        "go-zio",
        "go-abcd"
      ]
    }
  ]

  let group = new Set(array)
  let answer = []
     for(let j = 0 ; j < ids.length; j++){
      let value = ids[j];
       for(let k = 0; k < value["groups"].length; k++) {
         let instSg = value["groups"][k];
          let boolean = group.has(instSg)
          console.log(boolean);
         // }

       }
     }
   }

标签: javascript

解决方案


您可以使用它来将过滤后的结果作为数组取回。

const allGroups = ids.reduce((accum, elem) => accum.concat(elem['groups']), []);
const uniqueGroups = new Set(allGroups);
const result = array.filter(elem => !uniqueGroups.has(elem));
console.log(result); // ["go-fihjw"]

推荐阅读