JS 数组处理:生成自定义长度数组
您提到的问题是处理一个固定范围长度(4-8)的数组 arr 并根据一个自定义输入的数字 num 生成一个指定长度的数据列表。
解决方案:
横向计算:
function createlistdata(list, num = 600) { let count = list.reduce((n, i) => n + i.test, 0); let step = num / count | 0; //向下取整 let data = list.map((item, index) => { return array.from({ length: item.test }).map(citem => { return { min: 0, max: 0, }; }); }); let max = math.max(...list.map(i => i.test)); let value = 0, idx = 1; for (let index = 0; index < max; index++) { data.foreach(item => { if (item[index]) { item[index].index = idx++; item[index].min = value + 1; value += step; item[index].max = num < value + step ? num : value; } }); } return data; }
竖向计算:
function createListData(list, num = 600) { let count = list.reduce((n, i) => n + i.test, 0); let step = num / count | 0; //向下取整 let value = 0, idx = 1; let data = list.map((item, index) => { return Array.from({ length: item.test }).map(citem => { let start = value; value += step; return { index: idx++, min: start + 1, max: num < value + step ? num : value, }; }); }); return data; }