Javascript 如何优化阵列分组?
我有一个不断更新的数组,因此有必要更新它的分组。阵列示例:Javascript 如何优化阵列分组?,javascript,Javascript,我有一个不断更新的数组,因此有必要更新它的分组。阵列示例: [ { "price": 2419.62, "amount": 0.0266 }, { "price": 1927.52, "amount": 0.0217 }, ... ] 我尝试了不同的选择。目前,此选项是最快的: const points = [ { "price": 2419.62, "a
[
{
"price": 2419.62,
"amount": 0.0266
},
{
"price": 1927.52,
"amount": 0.0217
},
...
]
我尝试了不同的选择。目前,此选项是最快的:
const points = [
{
"price": 2419.62,
"amount": 0.0266
},
{
"price": 1927.52,
"amount": 0.0217
},
...
];
const range = 500;
const spread = 1800;
const countGroup = 250;
const sizeUnitGroup = range / countGroup;
const groups = {};
for (let i = 0; i < countGroup; i++){
groups[i] = [];
try {
points.forEach((item, id) => {
if (item.price > spread + (i*sizeUnitGroup) && item.price <= spread + (i*sizeUnitGroup + sizeUnitGroup)){
groups[i].push(item);
points.splice(id, 1);
}
if (item.price > (spread + (i*sizeUnitGroup + sizeUnitGroup))) throw BreakException;
});
} catch (e) {
}
}
const points=[
{
“价格”:2419.62,
“金额”:0.0266
},
{
“价格”:1927.52,
“金额”:0.0217
},
...
];
常数范围=500;
常数分布=1800;
const countGroup=250;
const sizeUnitGroup=范围/计数组;
常量组={};
for(设i=0;i{
如果(item.price>spread+(i*sizeUnitGroup)和&item.price(spread+(i*sizeUnitGroup+sizeUnitGroup)),则抛出BreakException;
});
}捕获(e){
}
}
但即便如此,这个函数的工作时间也太长了。您知道如何优化吗?您可以计算将值推送到所需插槽的时间间隔
var点=[
{价格:2419.62,金额:0.0266},
{价格:1927.52,金额:0.0217},
{价格:1800,金额:0.07},//-1不是结果
{价格:1800.000000000001,金额:0.07},//0
{价格:1802,金额:0.07},//0
],
范围=500,
排列=1800,
countGroup=250,
sizeUnitGroup=范围/计数组,
组={};
积分.forEach((项目,id)=>{
var i=数学.ceil((item.price-价差-sizeUnitGroup)/sizeUnitGroup);
如果(i>=0&&i
.as console wrapper{max height:100%!important;top:0;}
分组的逻辑是什么?请为示例数组发布一个示例更新(如何重新分组?)。这需要大量的迭代和拼接。迭代点
数组并找出每个点应该进入哪个组不是更好吗?@doodlemeister你的意思是这就是它?是的,有帮助吗?它避免了每次都必须重新为数组编制索引的.splice()
。