Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据其他数组的值筛选对象数组?_Javascript - Fatal编程技术网

Javascript 如何根据其他数组的值筛选对象数组?

Javascript 如何根据其他数组的值筛选对象数组?,javascript,Javascript,如何忽略键,仅使用值筛选数组?我尝试使用过滤器,但只返回一个类别 const Fruits = [ {name:"Apple", color:"red", type:"fruit", condition:"new"}, {name:"Apple", color:"green", type:"fruit", condition:"new"}, {name:"Banana", color:"yellow", type:"fruit", condition:"new"}, {name:"Banana"

如何忽略键,仅使用值筛选数组?我尝试使用过滤器,但只返回一个类别

const Fruits = [
{name:"Apple", color:"red", type:"fruit", condition:"new"},
{name:"Apple", color:"green", type:"fruit", condition:"new"},
{name:"Banana", color:"yellow", type:"fruit", condition:"new"},
{name:"Banana", color:"green", type:"fruit", condition:"new"},
{name:"Grape", color:"green", type:"fruit", condition:"older"},
{name:"Onion", color:"yellow", type:"greenery", condition:"new"},
]

const filter = ["fruit", "green", "new"];
我希望得到这样的结果:

let result = Fruits.filter(e => filter.includes(e.type))
用于在迭代时获取每个对象的值数组,然后用于测试过滤器数组中的所有值是否匹配

常数=[
{名称:“苹果”,颜色:“红色”,类型:“水果”,状态:“新”},
{名称:“苹果”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“黄色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“葡萄”,颜色:“绿色”,类型:“果实”,状态:“老”},
{名称:“洋葱”,颜色:“黄色”,类型:“绿色”,条件:“新”},
]
常量过滤器=[“水果”、“绿色”、“新”];
const newArray=Fruits.filter((fruit)=>{
返回filter.every(x=>Object.values(fruit).includes(x));
});
log(newArray)用于在迭代时获取每个对象的值数组,然后用于测试过滤器数组中的所有值是否匹配

常数=[
{名称:“苹果”,颜色:“红色”,类型:“水果”,状态:“新”},
{名称:“苹果”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“黄色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“葡萄”,颜色:“绿色”,类型:“果实”,状态:“老”},
{名称:“洋葱”,颜色:“黄色”,类型:“绿色”,条件:“新”},
]
常量过滤器=[“水果”、“绿色”、“新”];
const newArray=Fruits.filter((fruit)=>{
返回filter.every(x=>Object.values(fruit).includes(x));
});

log(newArray)
我的理解是,您希望通过
颜色
类型
条件
键过滤
水果
数组,如果其中任何一个包含
过滤器
数组中的值,则它们应该包含在过滤结果中

实现这一点的一个简单解决方案是使用以下过滤器逻辑:

基于您的代码片段,这方面的完整示例如下:

常数=[
{名称:“苹果”,颜色:“红色”,类型:“水果”,状态:“新”},
{名称:“苹果”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“黄色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“葡萄”,颜色:“绿色”,类型:“果实”,状态:“老”},
{名称:“洋葱”,颜色:“黄色”,类型:“绿色”,条件:“新”},
]
常量过滤器=[“水果”、“绿色”、“新”];
常量结果=水果。过滤器(水果=>{
返回过滤器。包括(水果。颜色)和过滤器。包括(水果。类型)和过滤器。包括(水果。状态);
})

控制台日志(结果)
我的理解是,您希望通过
颜色
类型
条件
键过滤
水果
数组,如果其中任何一个包含
过滤器
数组中的值,则它们应该包含在过滤结果中

实现这一点的一个简单解决方案是使用以下过滤器逻辑:

基于您的代码片段,这方面的完整示例如下:

常数=[
{名称:“苹果”,颜色:“红色”,类型:“水果”,状态:“新”},
{名称:“苹果”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“黄色”,类型:“水果”,状态:“新”},
{名称:“香蕉”,颜色:“绿色”,类型:“水果”,状态:“新”},
{名称:“葡萄”,颜色:“绿色”,类型:“果实”,状态:“老”},
{名称:“洋葱”,颜色:“黄色”,类型:“绿色”,条件:“新”},
]
常量过滤器=[“水果”、“绿色”、“新”];
常量结果=水果。过滤器(水果=>{
返回过滤器。包括(水果。颜色)和过滤器。包括(水果。类型)和过滤器。包括(水果。状态);
})

控制台日志(结果)“绿色”和“绿色”不一样。你是否期望在你的输出中有这样的结果?最好给出你所要求的预期结果。我们无法判断您的过滤器元素是应该出现在所有属性中还是仅出现在某些属性中,甚至无法判断过滤器数组中元素的顺序是否重要(因为它应该是一个集合,否则)。变量太多,请让use确切地知道您的期望,谢谢。“绿色”和“绿色”不一样。你是否期望在你的输出中有这样的结果?最好给出你所要求的预期结果。我们无法判断您的过滤器元素是应该出现在所有属性中还是仅出现在某些属性中,甚至无法判断过滤器数组中元素的顺序是否重要(因为它应该是一个集合,否则)。变量太多,因此请让use确切地知道您的期望值,谢谢。根据示例结果,我认为他想要
。every()
,而不是
。some()
。是的,我已经根据示例结果进行了调整。我认为他想要
。every()
,而不是
。some()
。是的,一旦提供了示例,我就进行了调整
  result = [
     {name:"Apple", color:"green", type:"fruit", condition:"new"},
     {name:"Banana", color:"green", type:"fruit", condition:"new"},
    ]
// fruit is current array item in Fruits being tested/filtered
filter.includes(fruit.color) && 
filter.includes(fruit.type) && 
filter.includes(fruit.condition)