为除数组中的值以外的所有内容过滤集合(排除数组中的值)
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(...)
试用 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(...)