为除数组中的值以外的所有内容过滤集合(排除数组中的值)

Filter a collection for everything except the values in an array (exclude the values in the array)

试用 lodash _.filter 到 return 排除数组中值的值数组。假设我有一个对象集合:

let col = {
    data: {
        name: "data1",
        type: "neighbor"
   },
},
{
    data: {
        name: "data2",
        type: "subordinate"
    }
},
{
    data: {
        name: "data3",
        type: "affiliate"
    }
}

let values = ["neighbor", "affiliate"];

我知道我可以做类似的事情:

const elementsToKeep = _.filter(col, (v) => _.includes(values, v.data("type")));

return“邻居”和“附属”,但我想return“下属”。我知道这应该很简单,但我很难在不编写更广泛的逻辑的情况下弄清楚它。

由于@BeerusDev 提到的数据结构不正确,让我添加代码作为答案并尝试解释它。

const col = [{
    data: {
      name: "data1",
      type: "neighbor"
    },

  },
  {
    data: {
      name: 'data2',
      type: 'subordinate'
    }
  },
  {
    data: {
      name: "data3",
      type: "affiliate"
    }
  }
];

let values = ["neighbor", "affiliate"];

const elementsToKeep = _.filter(col, (v) => !_.includes(values, v.data["type"]));

console.log(elementsToKeep)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

由于 _.includes 的结果是一个布尔值,要获取不在您拥有的数组内的数据,我们需要使用 !_.includes(...)