【发布时间】:2020-01-27 17:14:38
【问题描述】:
我需要在不知道criterias 数组中的确切属性的情况下通过另一个对象数组过滤对象数组。让我们看一个例子以便更好地理解。
这是一个我需要过滤的数组
const dataset = [
{
id: "4",
someval1: "10",
someval2: "20",
someval3: "30",
someval4: "40"
},
{
id: "10",
someval1: "10",
someval2: "20",
someval3: "30",
someval4: "40"
},
{
id: "22",
someval1: "102",
someval2: "202",
someval3: "302",
someval4: "40"
}];
这是一个数组,它的值应该是第一个数组的过滤条件
const criterias = [{ someval1: "10" }, { someval3: "30" }, { someval4: "40" }];
所以每当dataset 中的对象包含来自criterias 的所有值时,我都想保留他。问题是我希望数据集中的对象被所有相等的criterias 过滤。
到目前为止,我能够获得正确过滤dataset 的脚本,但只能过滤一个criteria。因此,从过滤后的给定数组中,我应该只从dataset 中获取前两个对象,第三个对象不包含所有criterias。
这是我当前的脚本
const dataset = [
{
id: "4",
someval1: "10",
someval2: "20",
someval3: "30",
someval4: "40"
},
{
id: "10",
someval1: "10",
someval2: "20",
someval3: "30",
someval4: "40"
},
{
id: "22",
someval1: "102",
someval2: "202",
someval3: "302",
someval4: "40"
}];
const criterias = [{ someval1: "10" }, { someval3: "30" }, { someval4: "40" }];
const filter = dataset.filter(item => criterias.some(criteria => Object.keys(criteria).some(prop => item[prop] != criteria[prop])));
console.log(filter)
【问题讨论】:
标签: javascript arrays object ecmascript-6