Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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,我正在寻找一个普通的javascript解决方案来使用一个或多个条件查找对象 理想情况下,我希望使用与lodash.find类似的语法,以及可以接受一个或多个条件的可重用函数: _.find(products, {code:"BLK") _.find(products, {code:"BLK", sale: false}) 在我的例子中,我正在寻找一个对象,因此我更喜欢find而不是filter const产品=[ { 标题:“衬衫”, 颜色:“黑色”, 代码:“BLK”, 销售:对 },

我正在寻找一个普通的javascript解决方案来使用一个或多个条件查找对象

理想情况下,我希望使用与lodash.find类似的语法,以及可以接受一个或多个条件的可重用函数:

_.find(products, {code:"BLK")
_.find(products, {code:"BLK", sale: false})
在我的例子中,我正在寻找一个对象,因此我更喜欢
find
而不是
filter

const产品=[
{
标题:“衬衫”,
颜色:“黑色”,
代码:“BLK”,
销售:对
},
{
标题:“更好的衬衫”,
颜色:“黑色”,
代码:“BLK”,
销售:假
},
{
标题:“蓝色衬衫”,
颜色:“蓝色”,
代码:“BLU”,
销售:假
}
]
//使用多个条件查找Lodash
log(u.find(产品,{代码:“BLK”,销售:false}))
//使用一个条件查找所有
log(products.filter(product=>product.color=='Black'))
//查找具有多个条件的单个
console.log(products.find(product=>product.color=='Black'和&product.sale==false))

您可以使用
数组.prototype.find
克隆lodash行为,并在回调中使用
数组.prototype.each()
检查所提供数组中各个对象的每个键和值,以及作为第二个参数传递的筛选器对象
obj

const产品=[
{
标题:“衬衫”,
颜色:“黑色”,
代码:“BLK”,
销售:对
},
{
标题:“更好的衬衫”,
颜色:“黑色”,
代码:“BLK”,
销售:假
},
{
标题:“蓝色衬衫”,
颜色:“蓝色”,
代码:“BLU”,
销售:假
}
]
功能查找(arr、obj){
返回arr.find((ele)=>{
返回obj&&Object.keys(obj.every)(key=>ele[key]==obj[key]);
})| | arr[0];
}
//使用多个条件查找Lodash
log(查找(产品,{代码:“BLK”,销售:false});
log(查找(产品,{title:“Blue Shirt”,sale:false});
console.log(查找(产品,未定义));
log(查找(产品,{}));

log(find(products,{title:'Better Shirt',sale:true}))
看看lodash的源代码?我理解了这个问题并有了答案。有人能再打开这个吗?这里有一个简单的答案:为什么把一个问题标记为“不清楚”会让它无法回答?如果有人能回答,这显然是足够清楚的。应该作为一个复制品或完美的