使用JavaScript按Open字段范围将一维数组拆分为嵌套子数组
实现方案
你可以通过遍历原数组判断Open字段所属区间,直接推入预定义的三个子数组中,最终得到的就是你需要的单个嵌套总数组结构,实现代码如下:
基础实现版本
// 初始化结果数组,三个子数组依次对应 <11、11-29、30+ 三个区间 const newdata = [[], [], []]; data.forEach(item => { const openVal = item.Open; if (openVal < 11) { newdata[0].push(item); } else if (openVal <= 29) { newdata[1].push(item); } else { newdata[2].push(item); } }); // 若需要子数组内按Open升序排列(和你给出的示例结果一致),可补充以下排序逻辑 newdata.forEach(subArr => subArr.sort((a, b) => a.Open - b.Open));
更简洁的reduce实现版本
const newdata = data.reduce((result, current) => { // 直接判断区间对应子数组索引 const index = current.Open < 11 ? 0 : current.Open <= 29 ? 1 : 2; result[index].push(current); return result; }, [[], [], []]) // 可选:子数组按Open升序排序 .map(sub => sub.sort((a, b) => a.Open - b.Open));
后续如果需要调整区间规则,只需要修改索引判断的条件即可,不需要改动整体结构。
内容的提问来源于stack exchange,提问作者ItalianDadx2
相关产品推荐
相关产品推荐

