【发布时间】:2014-12-16 20:15:04
【问题描述】:
我有以下对象列表,例如,作为数据源:
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 美元到 1,000 美元)。甚至此列表中的产品数量也是动态的。唯一不是动态的就是总是有 4 个价格范围,其中第一个是“upto x”,最后一个是“above y”。
我需要编写一个 javascript 代码来获取此列表及其动态价格并创建适当的范围。
请注意,我已经有了某种算法(将列表从低到高排序,获取平均值,获取每个价格占产品总量的百分比,等等),但我无法在 JS 代码中实现它。这就是为什么我在这里要求提供有效的 JavaScript 代码,而不仅仅是逻辑或理论想法。
提前谢谢你。
【问题讨论】:
-
您也需要定义一个增量。 10 美元或 100 美元或 1 美元
-
我不确定我理解你的意思。能详细点吗?
-
如果您的 delta 为 10,那么您的范围为 1-10 和 9、11-20 和 14、16、19、21-29 和 28,依此类推。如果您有 50 的 delta,则您有 0-49 和 9、14、16、119、24、42 等等。在您的示例中,您的起始增量为 20,然后是 30,然后是其余的
-
首先提醒大家,价格是动态的,不是预设的。每次加载页面时,列表中的所有项目都可能有不同的价格。就此而言,即使列表中的项目数量也是动态的。我需要在每次页面加载时进行此计算,并具有适当的 4 价格范围以涵盖整个价格范围(从当前集合中的最低价到最高价)。这就是问题的本质——我如何在 JavaScript 中以编程方式做到这一点?
-
好的 - 您的示例是否是实际范围并不明显。由于 SO 不是 e-lancing.com,请向我们展示您的尝试并提出具体问题,如 help center 中所述 - 我不介意编写自定义代码,但我收费。
标签: javascript arrays sorting object filter