指定された範囲からいくつかの範囲を除外します

ジョニーブラボー

範囲値の配列があります[1,35]次に、2番目の配列には[2,5], [8,9]、などの他の範囲があります

ここで、最初からこれらの範囲を減算し、[1-1]2-5取り出されたとおりに)次に、次に[6,7]、のような値を取得する必要があります[10,35]

したがって、基本的には、2番目の配列から範囲を取得し、最初の配列からそれらを削除したいと思います。

これどうやってするの?

トリンコット

以下のES6機能が可能です。

これにより、最初の引数で複数の範囲を指定でき、重複する範囲がないと想定されます。関数の戻り値は、最初の引数に基づく配列ですが、2番目の引数で指定された範囲が削除されています。元の配列は、プロセス中に変更されません。

function subtractRanges(a, b) {
    // Take deep copy of a and sort it
    a = a.map( x => [...x] ).sort( (x, y) => x[0] - y[0] );
    // Take shallow copy of b and sort it
    b = [...b].sort( (x, y) => x[0] - y[0] );

    var c = [], i = 0, j = 0;
    while (i < a.length && j < b.length) {
        var x = a[i], y = b[j];
        if (y[0] > x[0]) {
            c.push([x[0], Math.min(y[0]-1, x[1])]);
            if (y[1] < x[1]) {
                x[0] = y[1]+1;
                j++;
            } else {
                i++;
            }
        } else {
            if (y[1] >= x[1]) {
                i++;
            } else {
                if (y[1] >= x[0]) {
                    x[0] = y[1]+1;
                }
                j++;
            }
        }
    }
    // Add remainder of a, and return
    return [...c, ...a.slice(i)];
}

// Sample input
var a = [ [1,35] ];
var b = [ [2,5], [8,9] ];

// Get result
var result = subtractRanges(a, b)

// Output result
console.log(JSON.stringify(result));

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

指定された範囲と範囲値から残りのKMを見つけます:最小= 0、最大= 999999

分類Dev

指定された日付範囲から週の日付範囲を取得します

分類Dev

指定された範囲から文字の配列を作成します

分類Dev

リンクリスト-指定された範囲から番号を削除します

分類Dev

範囲を見つけて、見つかった範囲に基づいて別の範囲からコンテンツをクリアします

分類Dev

Python、範囲のリストから範囲に別の小さな範囲が含まれているかどうかを確認します

分類Dev

いくつかの条件が満たされるnumpy配列で長さNの範囲を見つけます

分類Dev

指定された範囲内の値を持つ子がクエリで見つからないかどうかを判断できますか?

分類Dev

値がいくつかの範囲に入力されているかどうかを確認します

分類Dev

指定された番号の連続する範囲のセットから範囲を検索する方法

分類Dev

与えられた範囲の交差点を見つけますか?

分類Dev

指定された範囲から「n」個の一意の乱数のリストを取得します

分類Dev

Firebirdの指定された範囲から日付のリストを選択します

分類Dev

指定された範囲の配列から2次元の2次元配列を生成します

分類Dev

行で提供される範囲を複数の行でいくつかの小さな範囲に分割する

分類Dev

特定の範囲(ポート範囲)から数値の範囲を除外する

分類Dev

指定された確率分布から範囲内の数値をランダムに選択します

分類Dev

指定された範囲から各要素の出現を効率的にカウントします

分類Dev

整数の範囲から指定された部分文字列にURLを追加します

分類Dev

値の範囲から指定された値を見つける方法は?

分類Dev

2つのフロートが指定された範囲のリストのいずれかにあるかどうかを確認します

分類Dev

いくつかの範囲から配列を構築する

分類Dev

いくつかの範囲でカバーされる総スプレッドを計算します

分類Dev

HighstockのRangeSelectorから現在選択されている範囲を取得します

分類Dev

日付範囲をいくつかの特定の日付範囲チャンクに分割します

分類Dev

数値の範囲をranges-v3でいくつかの範囲に分割します

分類Dev

2つのpython範囲を連結したいのですが、最初の範囲しか取得しません

分類Dev

範囲を除外しながら、特定の列からIP範囲を含む行を削除します

分類Dev

渡された列/行/範囲のVBAExcelから1つのセルを取得します

Related 関連記事

  1. 1

    指定された範囲と範囲値から残りのKMを見つけます:最小= 0、最大= 999999

  2. 2

    指定された日付範囲から週の日付範囲を取得します

  3. 3

    指定された範囲から文字の配列を作成します

  4. 4

    リンクリスト-指定された範囲から番号を削除します

  5. 5

    範囲を見つけて、見つかった範囲に基づいて別の範囲からコンテンツをクリアします

  6. 6

    Python、範囲のリストから範囲に別の小さな範囲が含まれているかどうかを確認します

  7. 7

    いくつかの条件が満たされるnumpy配列で長さNの範囲を見つけます

  8. 8

    指定された範囲内の値を持つ子がクエリで見つからないかどうかを判断できますか?

  9. 9

    値がいくつかの範囲に入力されているかどうかを確認します

  10. 10

    指定された番号の連続する範囲のセットから範囲を検索する方法

  11. 11

    与えられた範囲の交差点を見つけますか?

  12. 12

    指定された範囲から「n」個の一意の乱数のリストを取得します

  13. 13

    Firebirdの指定された範囲から日付のリストを選択します

  14. 14

    指定された範囲の配列から2次元の2次元配列を生成します

  15. 15

    行で提供される範囲を複数の行でいくつかの小さな範囲に分割する

  16. 16

    特定の範囲(ポート範囲)から数値の範囲を除外する

  17. 17

    指定された確率分布から範囲内の数値をランダムに選択します

  18. 18

    指定された範囲から各要素の出現を効率的にカウントします

  19. 19

    整数の範囲から指定された部分文字列にURLを追加します

  20. 20

    値の範囲から指定された値を見つける方法は?

  21. 21

    2つのフロートが指定された範囲のリストのいずれかにあるかどうかを確認します

  22. 22

    いくつかの範囲から配列を構築する

  23. 23

    いくつかの範囲でカバーされる総スプレッドを計算します

  24. 24

    HighstockのRangeSelectorから現在選択されている範囲を取得します

  25. 25

    日付範囲をいくつかの特定の日付範囲チャンクに分割します

  26. 26

    数値の範囲をranges-v3でいくつかの範囲に分割します

  27. 27

    2つのpython範囲を連結したいのですが、最初の範囲しか取得しません

  28. 28

    範囲を除外しながら、特定の列からIP範囲を含む行を削除します

  29. 29

    渡された列/行/範囲のVBAExcelから1つのセルを取得します

ホットタグ

アーカイブ