配列の分割とグループ化javascript / jquery

user2843661

私が持っています

range = [a,3,b,2,c,1,d,2,e,3,f,3]

そして、それらの値に応じて、a、b、c、d、e、fを3つの同じサイズのグループにグループ化する必要があります。

正しい結果は次のようになります。

group1 = [a]
group2 = [b,c]
group3 = [d,e,f]

更新:パターン-> group3のみがグループ全体の1/3より大きくなる可能性があります。私はこれまでにこれを持っています:

var range = [3,2,1,2,3,3]
var total = 14;
var group_size = total / 3;
var values = [0];
var groupnr = 0;
range = range.reverse();

while( range.length ) {
var curvalue = range.pop();

if( values[groupnr] + curvalue > group_size && groupnr < 2 ) {
     groupnr++;
     values[groupnr] = 0;
}
values[groupnr] += curvalue;
}
log(values);
スコット・サウエ

少なくとも1つの可能性があります:

var equalSplit = (function() {
    var sum = function(list) {return list.reduce(function(a, b) {
        return a + b;
    }, 0);};
    var evens = function(list) {
        return list.filter(function(item, index) {return !(index % 2);})
    };
    var odds = function(list) {
        return list.filter(function(item, index) {return !!(index % 2);})
    };
    var split = function(values, count) {
        var mean = sum(values) / values.length;
        var groups = [], index = 0, total, groupStart;
        for (var i = 0; i < count - 1; i++) {
            total = 0; groupStart = index;
            while (index < values.length && total < mean) {
                total += values[index++];
            }
            groups.push(values.slice(groupStart, index));
        }
        groups.push(values.slice(index));
        return groups;
    };
    var reconstituteRanges = function(ranges, splits) {
        var groups = {}, ctr = 0, diff;
        for (var i = 0; i < splits.length; i++) {
            diff = splits[i].length
            groups["group" + (i + 1)] = 
                    (evens(ranges.slice(ctr, ctr+=(2 * diff))));
        }
        return groups;
    };
    return function(ranges, count) {
        var values = odds(ranges);
        var splits = split(values, count);
        return reconstituteRanges(ranges, splits);
    }
}());

var ranges = ['a',3,'b',2,'c',1,'d',2,'e',3,'f',3];
console.log(equalSplit(ranges, 3));
//=> {"group1":["a"],"group2":["b","c"],"group3":["d","e","f"]}

JSFiddleで実際の動作を確認できます

この問題は以前のバージョンよりもはるかに単純ですが、コードはそれほど短くはありません。

しかし、あなたは本当に最後のグループにこのようなすべての重みを持たせたいですか?あなたはもともと、それらを同等に近づけたいと投稿しました。この場合、16.67のかなり高い分散に対して、加重合計は[3、3、8]です。ここで、[['a']、['b'、 'c'、 'd']、['e'、 'f']]は、わずか4.67の分散で、[3、5、6]でよりバランスが取れます。これは本当にあなたの要件ですか、それともこれはより単純なコードを書くための単なる方法でしたか?(このコードは前のコードに対する私の答えよりもそれほど短くはありませんが、かなり単純です。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascript / Jqueryで複数のキーに基づいて配列アイテムをグループ化する方法

分類Dev

jQueryを使用してJSON配列でグループ化

分類Dev

forループロジック配列内のいくつかの値-JavascriptとJQuery

分類Dev

JavaScript / jQuery:配列-最小キーのループ内戻り値

分類Dev

キーによる配列の分割とグループ化

分類Dev

Jquery配列を複数の要素でグループ化し、合計を見つける

分類Dev

Jquery配列ループ

分類Dev

PHPの分割とグループ配列

分類Dev

そのグループ化された列に色を付ける方法は?(jQuery DataTables行のグループ化)

分類Dev

jquery要素から配列内のforループで自動化する方法

分類Dev

Javascript / jQueryは、各ループから前の配列値を取得します

分類Dev

配列値のグループ化Javascript

分類Dev

数値をグループ化するためのJQuery文字列操作

分類Dev

jQueryディクショナリから2つの日付と時刻をフィルタリングし、新しい配列でグループ化する方法

分類Dev

jqueryを使用してカテゴリIDで配列オブジェクトをグループ化する

分類Dev

配列を作成し、javascript / jqueryでループします

分類Dev

配列とjQueryリストをループして一致するものを見つけるコードを最適化する

分類Dev

jQuery $ .ajaxと$ .eachが配列をループします

分類Dev

jqueryデータテーブルの複数の列をグループ化する方法

分類Dev

配列をグループ化することによるNumpy分割配列

分類Dev

Jqueryの配列とデータの属性

分類Dev

複数の列、jqueryデータテーブルでグループ化する方法

分類Dev

jquery分割文字列/配列

分類Dev

分割されたjsonへのjQuery配列

分類Dev

jqueryのグループ化とjsonオブジェクトの複数のキーの取得?

分類Dev

jQueryを使用して配列の配列をループする方法は?

分類Dev

ループを使用せずにJqueryの配列で置換

分類Dev

配列要素をフィールドごとに分割/グループ化

分類Dev

jqueryのjson配列からjsonデータを分割する

Related 関連記事

  1. 1

    Javascript / Jqueryで複数のキーに基づいて配列アイテムをグループ化する方法

  2. 2

    jQueryを使用してJSON配列でグループ化

  3. 3

    forループロジック配列内のいくつかの値-JavascriptとJQuery

  4. 4

    JavaScript / jQuery:配列-最小キーのループ内戻り値

  5. 5

    キーによる配列の分割とグループ化

  6. 6

    Jquery配列を複数の要素でグループ化し、合計を見つける

  7. 7

    Jquery配列ループ

  8. 8

    PHPの分割とグループ配列

  9. 9

    そのグループ化された列に色を付ける方法は?(jQuery DataTables行のグループ化)

  10. 10

    jquery要素から配列内のforループで自動化する方法

  11. 11

    Javascript / jQueryは、各ループから前の配列値を取得します

  12. 12

    配列値のグループ化Javascript

  13. 13

    数値をグループ化するためのJQuery文字列操作

  14. 14

    jQueryディクショナリから2つの日付と時刻をフィルタリングし、新しい配列でグループ化する方法

  15. 15

    jqueryを使用してカテゴリIDで配列オブジェクトをグループ化する

  16. 16

    配列を作成し、javascript / jqueryでループします

  17. 17

    配列とjQueryリストをループして一致するものを見つけるコードを最適化する

  18. 18

    jQuery $ .ajaxと$ .eachが配列をループします

  19. 19

    jqueryデータテーブルの複数の列をグループ化する方法

  20. 20

    配列をグループ化することによるNumpy分割配列

  21. 21

    Jqueryの配列とデータの属性

  22. 22

    複数の列、jqueryデータテーブルでグループ化する方法

  23. 23

    jquery分割文字列/配列

  24. 24

    分割されたjsonへのjQuery配列

  25. 25

    jqueryのグループ化とjsonオブジェクトの複数のキーの取得?

  26. 26

    jQueryを使用して配列の配列をループする方法は?

  27. 27

    ループを使用せずにJqueryの配列で置換

  28. 28

    配列要素をフィールドごとに分割/グループ化

  29. 29

    jqueryのjson配列からjsonデータを分割する

ホットタグ

アーカイブ