|
1 | 1 | function array_chunk (input, size, preserve_keys) { |
2 | | - // http://kevin.vanzonneveld.net |
3 | | - // + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com) |
4 | | - // + improved by: Brett Zamir (http://brett-zamir.me) |
5 | | - // % note 1: Important note: Per the ECMAScript specification, objects may not always iterate in a predictable order |
6 | | - // * example 1: array_chunk(['Kevin', 'van', 'Zonneveld'], 2); |
7 | | - // * returns 1: [['Kevin', 'van'], ['Zonneveld']] |
8 | | - // * example 2: array_chunk(['Kevin', 'van', 'Zonneveld'], 2, true); |
9 | | - // * returns 2: [{0:'Kevin', 1:'van'}, {2: 'Zonneveld'}] |
10 | | - // * example 3: array_chunk({1:'Kevin', 2:'van', 3:'Zonneveld'}, 2); |
11 | | - // * returns 3: [['Kevin', 'van'], ['Zonneveld']] |
12 | | - // * example 4: array_chunk({1:'Kevin', 2:'van', 3:'Zonneveld'}, 2, true); |
13 | | - // * returns 4: [{1: 'Kevin', 2: 'van'}, {3: 'Zonneveld'}] |
| 2 | + // http://kevin.vanzonneveld.net |
| 3 | + // + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com) |
| 4 | + // + improved by: Brett Zamir (http://brett-zamir.me) |
| 5 | + // % note 1: Important note: Per the ECMAScript specification, objects may not always iterate in a predictable order |
| 6 | + // * example 1: array_chunk(['Kevin', 'van', 'Zonneveld'], 2); |
| 7 | + // * returns 1: [['Kevin', 'van'], ['Zonneveld']] |
| 8 | + // * example 2: array_chunk(['Kevin', 'van', 'Zonneveld'], 2, true); |
| 9 | + // * returns 2: [{0:'Kevin', 1:'van'}, {2: 'Zonneveld'}] |
| 10 | + // * example 3: array_chunk({1:'Kevin', 2:'van', 3:'Zonneveld'}, 2); |
| 11 | + // * returns 3: [['Kevin', 'van'], ['Zonneveld']] |
| 12 | + // * example 4: array_chunk({1:'Kevin', 2:'van', 3:'Zonneveld'}, 2, true); |
| 13 | + // * returns 4: [{1: 'Kevin', 2: 'van'}, {3: 'Zonneveld'}] |
14 | 14 |
|
15 | | - var x, p = '', i = 0, c = -1, l = input.length || 0, n = []; |
| 15 | + var x, p = '', i = 0, c = -1, l = input.length || 0, n = []; |
16 | 16 |
|
17 | | - if (size < 1) { |
18 | | - return null; |
19 | | - } |
| 17 | + if (size < 1) { |
| 18 | + return null; |
| 19 | + } |
20 | 20 |
|
21 | | - if (Object.prototype.toString.call(input) === '[object Array]') { |
22 | | - if (preserve_keys) { |
23 | | - while (i < l) { |
24 | | - (x = i % size) ? n[c][i] = input[i] : n[++c] = {}, n[c][i] = input[i]; |
25 | | - i++; |
26 | | - } |
27 | | - } |
28 | | - else { |
29 | | - while (i < l) { |
30 | | - (x = i % size) ? n[c][x] = input[i] : n[++c] = [input[i]]; |
31 | | - i++; |
32 | | - } |
33 | | - } |
| 21 | + if (Object.prototype.toString.call(input) === '[object Array]') { |
| 22 | + if (preserve_keys) { |
| 23 | + while (i < l) { |
| 24 | + (x = i % size) ? n[c][i] = input[i] : n[++c] = {}, n[c][i] = input[i]; |
| 25 | + i++; |
| 26 | + } |
34 | 27 | } |
35 | 28 | else { |
36 | | - if (preserve_keys) { |
37 | | - for (p in input) { |
38 | | - if (input.hasOwnProperty(p)) { |
39 | | - (x = i % size) ? n[c][p] = input[p] : n[++c] = {}, n[c][p] = input[p]; |
40 | | - i++; |
41 | | - } |
42 | | - } |
| 29 | + while (i < l) { |
| 30 | + (x = i % size) ? n[c][x] = input[i] : n[++c] = [input[i]]; |
| 31 | + i++; |
| 32 | + } |
| 33 | + } |
| 34 | + } |
| 35 | + else { |
| 36 | + if (preserve_keys) { |
| 37 | + for (p in input) { |
| 38 | + if (input.hasOwnProperty(p)) { |
| 39 | + (x = i % size) ? n[c][p] = input[p] : n[++c] = {}, n[c][p] = input[p]; |
| 40 | + i++; |
43 | 41 | } |
44 | | - else { |
45 | | - for (p in input) { |
46 | | - if (input.hasOwnProperty(p)) { |
47 | | - (x = i % size) ? n[c][x] = input[p] : n[++c] = [input[p]]; |
48 | | - i++; |
49 | | - } |
50 | | - } |
| 42 | + } |
| 43 | + } |
| 44 | + else { |
| 45 | + for (p in input) { |
| 46 | + if (input.hasOwnProperty(p)) { |
| 47 | + (x = i % size) ? n[c][x] = input[p] : n[++c] = [input[p]]; |
| 48 | + i++; |
51 | 49 | } |
| 50 | + } |
52 | 51 | } |
53 | | - return n; |
| 52 | + } |
| 53 | + return n; |
54 | 54 | } |
0 commit comments