Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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_Function_Object_Filter_Arguments - Fatal编程技术网

Javascript 使用可变参数筛选对象

Javascript 使用可变参数筛选对象,javascript,function,object,filter,arguments,Javascript,Function,Object,Filter,Arguments,我需要使用getProduct函数过滤我的products数组,该函数接受可变参数列表。 参数可以是产品的名称和/或minPrice、maxPrice和/或型号中的价格 let products = [ { "name": "Lenovo", "price": "18000", "model": "v580c" }, { "name": "Apple", "price": "30000", "model": "Iphone 6" }, {

我需要使用
getProduct
函数过滤我的
products
数组,该函数接受可变参数列表。 参数可以是产品的名称和/或minPricemaxPrice和/或型号中的价格

let products = [
{
    "name": "Lenovo",
    "price": "18000",
    "model": "v580c"
},
{
    "name": "Apple",
    "price": "30000",
    "model": "Iphone 6"
},
{
    "name": "Nikon",
    "price": "25000",
    "model": "G290"
}]
函数getProduct(productName、minPrice、maxPrice、productModel){
返回产品。过滤器(产品=>{
返回product.priceminPrice&&product.name==productName;
});
}
log(getProduct(“Apple”,35403000000));
log(getProduct(“联想”,35403000000,“v580c”);

您可以发送一个参数数组作为参数,并编写相应的逻辑来处理它们

示例:

函数getProduct(数组、参数){
var list=array.filter(函数(o){
返回参数每个(功能)(千伏){
if(o.hasOwnProperty(千伏键)){
var cur=o[kv.键];
开关(千伏运行){
案例“>”:返回电流>千伏值
案例“”},

{key:“price”,值:40000,操作:“如果不需要搜索多个项目,可以使用具有特殊结构的对象进行搜索。此方案使用具有此结构的对象进行过滤:

function getProduct(productName, minPrice, maxPrice, productModel) {

    return products.filter(product => {
        return product.price < maxPrice && product.price > minPrice && product.name == productName;
    });
}

console.log(getProduct("Apple", 3540, 3000000000));
console.log(getProduct("Lenovo", 3540, 3000000000, "v580c"));
该算法在
search
中查找每个属性,如果所有比较都为真,则将元素添加到结果集中

函数过滤器(数组、搜索){
返回数组.filter(函数(a){
返回Object.keys(搜索).every(函数(k){
返回(
a[k]==搜索[k]||
搜索类型[k]==='object'&&(

('min'在搜索[k])&&('max'在搜索[k])&&search[k]。min为什么我没有想到
min
max
+1只是一个建议,因为您已经生成了一个真正通用的代码,请选中
search[k]=='object'
的最小值/最大值看起来不正确。你可以改为检查键。@Rajesh,这只是一个开放API的想法。它取决于用途,需要哪些参数,这是一个建议,而不是最终产品(一如既往:-)@Rajesh,
in
只对对象起作用。如果没有对象,you get
Uncaught TypeError:无法使用'in'运算符搜索…in…
。很抱歉,但这是我第一次认为,我应该使用我的代码。
min
max
添加了很多条件。为单独的查询条件添加单独的对象将增加很多条件eep API简单,使查询更具可配置性。但这只是我的观点。可能有一些事情我可能错过了,因此得出了这个结论,但我想失败和错误有助于我们学习。:-)周末愉快。
{ 
    name: 'Apple',
    price: {
        min: 3540,  // both or a single border is possible
        max: 60000
    },
    model: function (s) { return s.match(/s/); } // just search for a single letter
}