0

属性の配列を作成する必要があります

いう:var array = ['dog', 'cat', 'lion', 'tiger', 'bear', 'human', 'snake'];

そして、これを必要な数のグループに分割する関数を作成します。

たとえば、入力は次のようになります。function arrayGrouper(array, 3)

group 1出力はandという文字列になりますdog, cat, lion

group 2 tiger, bear

group 3 human, snake

そしてもし私がしたなら

function arrayGrouper(array, 2)

それは戻るだろう

  group 1   dog, cat, lion, tiger
  group 2   bear, human, snake

これまでのところ、この関数内で機能する for ループがありますが、希望どおりに機能しないことは既にわかっています。

  var team1 = [];
   var team2 = [];
   var team3 = [];



    for(var i = 0; i < array.length; i++)
    {
       if([i] <= Math.floor((array.length)/3))
        team1.push(array[i]);
    if ([i] > Math.floor(((array.length)/3)) && [i] <= (array.length - 3))
      team2.push(array[i]);
    if([i] > (array.length - 3))
    team3.push(array[i]);

   }
   print(team1);
   print(team2); 
   print(team3);

sliceまた、関数内でorを使用したくありませんsplice

4

5 に答える 5

0

どうぞhttp://jsfiddle.net/c3DsK/1/

var array = ['dog', 'cat', 'lion', 'tiger', 'bear', 'human', 'snake'];   

function arrayGrouper ( array, n ) {
    var len = array.length;
    var groupBy = Math.floor(len/n);
    var firstLen = (len - (groupBy * n)) + groupBy;
    var ptr = 0;

    var strings = new Array();

    for ( var j = 0; j < n; j++ ) {
        var string = "";
        var loop = groupBy;
        if (j == 0) {
            loop = firstLen;
        }
        for ( var i = 0; i < loop; i++ ) {
            string += " " + array[ptr];
            ptr++;
        }
        strings['group' + (j+1)] = string;
    }
    return strings;
}

console.log(arrayGrouper(array,2));
console.log(arrayGrouper(array,3));

そして出力

[group1: " dog cat lion tiger", group2: " bear human snake"]
[group1: " dog cat lion", group2: " tiger bear", group3: " human snake"]

注:このようにグループにアクセス/保存できます

var group = arrayGrouper(array,2);
var group1 = group['group1'];
var group2 = group['group2'];
于 2013-11-13T15:34:58.170 に答える
0

この関数は、各グループのサブ配列を含む新しい配列を返します。

function arrayGrouper(stack, slices) {
    var remainder = stack.length % slices,
        size = Math.ceil(stack.length / slices),
        result = [],
        i = 0,
        slice;
    while (result.length < slices) {
        result.push(slice = []);
        while (slice.length < size) {
            slice.push(stack[i++]);
        }
        if (result.length === remainder) size--;
    }
    return result;
}

使用法 :

var groups = arrayGrouper(array, 2);
var team1 = groups[0]; // ["dog", "cat", "lion", "tiger"]
var team2 = groups[1]; // ["bear", "human", "snake"]

配列の代わりに文字列が必要な場合は、joindocを使用します。

var groups = arrayGrouper(array, 2);
var team1 = groups[0].join(' '); // "dog cat lion tiger"
var team2 = groups[1].join(' '); // "bear human snake"

これがライブデモです: http://jsfiddle.net/wared/HS2yH/ .

于 2013-11-13T16:02:16.250 に答える