0

この疑問はunderscore.jsに関するものですが、通常のjavascriptで解決できます。

1 つの配列があるとします。

['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

1 つのパラメーターに従って、配列の代表的な X 要素のみを表示したいと考えています。

例えば。

  • 2つの要素が必要な場合。私にとって代表的なものは次のようになります: ['Jan', 'Dec']
  • 3 つの要素の場合: ['Jan', 'Jul', 'Dec']
  • 4 つの要素の場合: ['Jan', 'Apr', 'Sep', 'Dec']
  • など...

要件:

  1. 私は常に最初と最後の要素が欲しい
  2. 商品数は2点以上となります

ありがとう

4

1 に答える 1

2

例のパターンから判断すると、「代表」は最初、最後、および中央から N-2 要素です。

function representative(arr, n) {
    n = Math.max(n, Math.min(arr.length, 2));
    var offset = (arr.length - 1) / (n - 1);
    var out = [];
    for(var i = 0; i < arr.length; i += offset) out.push(arr[0|Math.round(i)]);
    return out;
}

var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
console.log(representative(months, 2));
console.log(representative(months, 3));
console.log(representative(months, 4));

「中間」の定義は議論の余地がありますが、うまくいくようです...

// output
[ 'Jan', 'Dec' ]
[ 'Jan', 'Jul', 'Dec' ]
[ 'Jan', 'May', 'Aug', 'Dec' ]
于 2013-03-06T11:23:23.923 に答える