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

javascript-创建动态价格范围(非滑块)

javascript-创建动态价格范围(非滑块),javascript,arrays,sorting,object,filter,Javascript,Arrays,Sorting,Object,Filter,例如,我有以下对象列表作为数据源: var data = [ {"id": 456, "name": "ngf", "price": 9}, {"id": 576, "name": "ghdf", "price": 14}, {"id": 756, "name": "dtdf", "price": 16}, {"id": 743, "name": "fsd", "price": 19}, {"id": 354, "name": "gf", "price": 28}, {"id": 678, "n

例如,我有以下对象列表作为数据源:

var data = [
{"id": 456, "name": "ngf", "price": 9},
{"id": 576, "name": "ghdf", "price": 14},
{"id": 756, "name": "dtdf", "price": 16},
{"id": 743, "name": "fsd", "price": 19},
{"id": 354, "name": "gf", "price": 28},
{"id": 678, "name": "hjmd", "price": 42},
{"id": 783, "name": "fgh", "price": 55},
{"id": 345, "name": "gdv", "price": 60},
{"id": 785, "name": "ghj", "price": 67},
{"id": 869, "name": "hd", "price": 87},
{"id": 234, "name": "hgf", "price": 95}
]
列表是按对象的价格值进行排序的,因为在我的代码中这是真实的

此列表实际上表示页面上显示的产品的数据源。 现在,我需要创建动态价格范围,以便通过以下方式筛选此列表进行显示:

最多10美元 $11 - 30 $31 - $50 > $50 正如我所提到的,这些范围在这里不是任意的,而是基于当前对象产品列表中的价格值。然而,这只是一个例子,在我的网站上的真实代码中,这个列表是动态的,价格可以在非常广泛的总体范围内变化,例如,它可以从0.5美元到1000美元。甚至这个列表中的产品数量也是动态的。这里唯一不动态的是总是有4个价格范围,其中第一个如果高达x,最后一个高于y

我需要编写一个javascript代码,可以获取这个列表及其动态价格,并创建适当的范围

请注意,我已经有了一种算法,可以将列表从低到高排序,得到平均值,得到每个价格相对于整个产品数量的百分比,等等,但实际上我还不能在JS代码中实现它。这就是为什么我在这里要求一个工作的JavaScript代码,而不仅仅是逻辑或理论上的想法


提前谢谢你。

哦,好吧。我觉得很有趣,所以这里有一个解决方案

风险值数据=[ {id:456,名称:ngf,价格:9}, {id:576,姓名:ghdf,价格:14}, {id:756,name:dtdf,price:16}, {id:743,姓名:消防处,价格:19}, {id:354,名称:gf,价格:28}, {id:678,名称:hjmd,价格:42}, {id:783,姓名:fgh,价格:55}, {id:345,name:gdv,price:60}, {id:785,姓名:ghj,价格:67}, {id:869,名称:hd,价格:87}, {id:234,名称:hgf,价格:95} ], 范围=[0,10,30,50,Number.MAX_值], bucket={}, numBuckets=ranges.length-1; //创建对象以保持范围 对于var i=0;i桶。限制[0]&价格为50美元
您还需要定义一个增量$10美元或100美元或1美元我不太明白你的意思。你能详细说明一下吗?如果你的delta是10,那么你的范围是1-10和9,11-20和14,16,19,21-29和28,依此类推。如果delta为50,则0-49为9、14、16119、24、42,依此类推。在您的示例中,起始增量为20,然后是30,然后是rest。首先,我提醒您,价格是动态的,不是预设的。每次加载页面时,列表中的所有项目都可能有不同的价格。就这一点而言,即使列表中的项目数量也是动态的。我需要在每次页面加载时进行此计算,并具有适当的4个价格范围,以涵盖当前集合中从最低到最高的整个价格范围。这就是问题的本质——我如何在JavaScript中以编程的方式做到这一点?好吧——您的示例是否是实际的范围并不明显。由于e-lancing.com并非如此,请向我们展示您的尝试,并提出具体问题,详情请参见-我不介意编写自定义代码,但我收费。