1

続きをどうしようか悩みました。

私はオブジェクトの配列を持っており、特定のインデックスの周りなどのセット量を取得しようとしています。

これが例です。

var arr = [0,1,2,3,4,5,6,7,8,9,10];
var index = 0;
var max = 5;

If the index is 0 I want [0 - 4]
If the index is 4 I want [2 - 6]
If the index is 9 I want [6 - 10]

しかし、配列が最大値よりも小さい場合にも機能するようにします。例えば

var arr = [0,1,2];
var index = 0;
var max = 5;

Any index would return [0 - 2]

何かご意見は?

4

2 に答える 2

4

あなたはこれを試してみたいかもしれません

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function getRange(array, index, range) {
    var least = index - Math.floor(range/2);
    least = (least < 0) ? 0 : least;
    return array.slice(least, least+range);
}
于 2012-05-13T08:36:07.430 に答える
0
var start = index - max / 2;
if (start < 0) start = 0;
var end = start + max;
if (end > arr.length) {
  end = arr.length;
  start = end - max;
  if (start < 0) start = 0;
}
var result = arr.slice(start, end);
于 2012-05-13T08:27:46.923 に答える