我想用最现代的方式制作像这样的数组
const nextchunk = [];
nextchunk[0] = [0, 6];
nextchunk[1] = [7, 13];
每个nextchunk必须有7个位置,如图所示。这些代表稍后在代码中的限制查询。因此nextchunk[1]
取出第7 - 13项,nextchunk[2]
得出14 - 20
我希望能够灵活地在运行时调用nextchunk[20]
并让它返回正确的值。
答案 0 :(得分:5)
function chunks(size) {
return function getChunk(index) {
return [size * index, size * (index + 1) - 1];
}
}
const nextchunk = chunks(7);
console.log(
nextchunk(0),
nextchunk(1),
nextchunk(20)
);
您可以轻松计算出该值。在实际需要之前无需生成它。如果你真的需要这个数组,那么很容易用上层帮助器构建它:
const nextchunk = Array.from({length: 21}, (_, i) => chunks(7)(i));
console.log(nextchunk[20]);
答案 1 :(得分:4)
我希望能够灵活地致电
nextchunk[20]
运行时并让它返回正确的值。
虽然我不建议在生产中使用此方法(主要是因为您无法将其转换为在老年js引擎中工作),但您可以实现nextchuck[20]
语法使用Proxies。
// just for fun
const nextChunk = new Proxy([], {
get(target, prop) {
const maybeIndex = parseInt(prop, 10)
const has = Reflect.has(target, prop)
const value = Reflect.get(target, prop)
if (has) {
return value
}
if(!Number.isNaN(maybeIndex)) {
const newValue = [maybeIndex * 7, 6 + maybeIndex * 7]
Reflect.set(target, prop, newValue );
return newValue;
}
return value;
}
});
console.log(nextChunk[0], nextChunk[1], nextChunk[20])
console.log(nextChunk[0] === nextChunk[0])
答案 2 :(得分:2)
您可以创建自定义函数,该函数接受数组和number
,并根据您的计算将新元素添加到数组中。
const arr = [];
const nextchunk = (array, chunk) => {
const start = chunk * 6 + chunk;
array.push([start, start + 6])
}
nextchunk(arr, 0);
nextchunk(arr, 1);
nextchunk(arr, 2);
nextchunk(arr, 20);
console.log(arr)